Java使用OpenOffice在线预览Office及PDF

news/2024/11/30 15:31:33/

使用OpenOffice可实现在线预览office文件内容

更多精彩

  • 更多技术博客,请移步 asing1elife’s blog

思路

  1. 用 OpenOffice 将 word / excel / ppt 转换为 pdf
  2. 用 pdf.js 将转换后的 pdf 显示在浏览器中显示

准备

  1. 安装 OpenOffice ,参见 OpenOffice 在 Linux 下安装使用
  2. 启动 OpenOffice ,soffice "-accept=socket,host=localhost,port=8100;urp;" -headless -nofirststartwizard &
    • Mac端需要跳转到 Applications/OpenOffice.app/Contents/program 才可启动服务
  3. 下载 JODConverter ,在其 lib 目录中找到 jodconverter-cli-2.2.2.jar ,并引入以下 jar 包
  4. 下载 PDF.js ,并引入到项目中
    • vue项目使用vue.js pdf viewer

在项目 pom.xml 中引入以下包

<dependency><groupId>org.openoffice</groupId><artifactId>juh</artifactId><version>4.1.2</version>
</dependency>
<dependency><groupId>org.openoffice</groupId><artifactId>jurt</artifactId><version>4.1.2</version>
</dependency>
<dependency><groupId>org.openoffice</groupId><artifactId>ridl</artifactId><version>4.1.2</version>
</dependency>
<dependency><groupId>org.openoffice</groupId><artifactId>unoil</artifactId><version>4.1.2</version>
</dependency>
<dependency><groupId>org.openoffice</groupId><artifactId>jodconverter</artifactId><version>2.2.2</version><scope>system</scope><systemPath>${basedir}/../lib/jodconverter-2.2.2.jar</systemPath>
</dependency>

调用服务并转换文件

  1. 通过 OpenOfficeConnection 调用 OpenOffice 服务,并将传入文件转换为 PDF 格式
public static File fileToPdf(File file) {// 文件全路径名String fileName = file.getPath();// 存放转换结果的 pdf 文件File pdfFile = new File(fileName.substring(0, fileName.lastIndexOf(".")) + Constants.REPORT_FILE_PREVIEW_SUFFIX);// 非空验证if (!file.exists() || !file.isFile()) {return null;}// 存在则不再转换if (pdfFile.exists() && pdfFile.isFile()) {return pdfFile;}// 获取连接OpenOfficeConnection connection = new SocketOpenOfficeConnection(Constants.OPEN_OFFICE_CONNECTION_PORT);try {// 建立连接connection.connect();// 开始转换DocumentConverter converter = new OpenOfficeDocumentConverter(connection);converter.convert(file, pdfFile);// 关闭连接connection.disconnect();} catch (ConnectException e) {logger.error("PDF 转换失败,OpenOffice 服务未启动!", e);throw new TSharkException("PDF 转换失败,OpenOffice 服务未启动!", e);}return pdfFile;
}

在页面准备显示内容的区域

  1. 页面上通过 iframe 引入 pdf.js 中的 viewer.html 并传入待显示的 pdf 文件
<iframe src="${ctx}/assets/plugins/pdf/web/viewer.html?file=<c:url value="/api/report/intro/preview/file/${fileNamePrefix}/${fileNameSuffix}"/>" width="100%" height="100%" frameborder="0" scrolling="hidden">
</iframe>

后端返回待显示的文件流

  1. 后端将待显示的 pdf 文件通过 ResponseEntity 传入到前端
public ResponseEntity<byte[]> preview(String fileName) throws IOException {// 获取文件File file = new File(Constants.REPORT_SOURCE_FILE_PATH + fileName);// 转换并返回结果byte[] pdfFileBytes = FileUtils.readFileToByteArray(OnlinePreviewUtil.fileToPdf(file));HttpHeaders httpHeaders = new HttpHeaders();httpHeaders.setContentType(MediaType.valueOf("application/pdf"));httpHeaders.setContentLength(pdfFileBytes.length);httpHeaders.add(HttpHeaders.ACCEPT_RANGES, "bytes");return new ResponseEntity<byte[]>(pdfFileBytes, httpHeaders, HttpStatus.OK);
}

http://www.ppmy.cn/news/706241.html

相关文章

onlyoffice集成实现编辑预览

文章目录 前言一、使用docker方式进行安装1. 系统要求2.安装docker3.安装onlyoffice文件服务器 二、页面集成1.使用vue3进行集成安装依赖使用组件 2.html集成 三、回调Demo总结 前言 ONLYOFFICE 文档开发者版ONLYOFFICE Docs 是一款功能强大的在线编辑器&#xff0c;适用于文本…

java用openOffice实现在线预览

1. 原理 将 office 文档转换为 pdf &#xff0c;返回文件流给前端实现预览。 当前的主浏览器都支持直接打开pdf文件&#xff0c;从而实现文件预览。如果是其他格式文件则得下载&#xff0c;因此用openOffice实现文件转pdf格式。 1&#xff09;openOffice的安装 下载地址&#…

JAVA结合OpenOffice转换office文档-jodconverter-core-3.0-beta-4

首先机器要安装openoffice软件&#xff0c;下载链接&#xff1a;http://www.openoffice.org/download/index.html 学习结合网友写的&#xff0c;直接给出代码&#xff1a; import java.io.File; import java.io.IOException; import java.util.Properties;import org.artofsolv…

openOffice pdf.js spring boot 微信在线预览office pdf文件

下载openoffice 并安装//pdf.js 案例 https://mozilla.github.io/pdf.js/examples/index.html#interactive-examples//openoffice 连接不上 进入安装目录 cmd 运行以下命令 soffice -headless -accept"socket,host127.0.0.1,port8100;urp;" -nofirststartwizard<!…

onlyoffice二次开发集成、onlyoffic集成

onlyoffice二次开发集成、onlyoffic集成 支持功能 新增word,excel,ppt文档在线多用户协同编辑文档实时通讯批注等功能 下面是demo的功能截图&#xff08;架构&#xff1a;springboot vue &#xff09; demo下载 做了一个在线体验预览的点击查看&#xff08;如果打不开页面…

office在线编辑ONLYOFFICE集成java和前端

准备: onlyoffice/documentServer在线编辑保存 启动一个documentServer的容器 docker run -it --name documentServer -d -p 9090:80 onlyoffice/documentserver 使得可以访问http://localhost:9090/web-apps/apps/api/documents/api.js VUE ONLYOFFICE 基本配置使用 1 引…

Java开发中OnlyOffice、OpenOffice和LibreOffice怎么选?

我把官网贴在下面如果大家有好的使用方法可以分享下。 onlyoffice官网&#xff1a;https://www.onlyoffice.com/ Api官方地址(英文)&#xff1a;https://api.onlyoffice.com/editors/basic Api中文地址(中文)&#xff1a;https://www.onlyoffice.org.cn/guide/usage-mode.html …

Java实现在线预览--openOffice实现

#Java实现在线预览–openOffice实现 ##简介 之前有写了poi实现在线预览的文章&#xff0c;里面也说到了使用openOffice也可以做到&#xff0c;这里就详细介绍一下。 我的实现逻辑有两种&#xff1a; 一、利用jodconverter(基于OpenOffice服务)将文件(.doc、.docx、.xls、.ppt)转…