Linux系统下word转pdf,xls转pdf,ppt转pdf

2023-11-01

word转换pdf的技术方案,供参考。【doc/docx/ppt/pptx/xls/xlsx均支持转换】
 
         本方案是Java结合shell命令完成,不同于以往的仅依赖java组件转换或打印pdf的方案,需要目标服务器安装office套件,可选方案有OpenOffice和LibreOffice[二者源是一家产品],安装完office套件后,使用office提供的脚本完成转换。安装LibreOffice时,为避免复杂的依赖关系,建议采用yum方式安装: yum install libreoffice
 
         脚本内容: soffice --headless --invisible --convert-to pdf 源office文档路径 --outdir 目录存储目录

 
需要将以上脚本编写成sh脚本的形式,其中源路径需要配置成参数,由Java程序调用sh脚本时传入,转换结束后,到指定的目录可取到同名的pdf文档,再进行与业务相关的逻辑处理。注:临时目录需要定期清理,防止存储过多临时文档,导致磁盘占满。

Java调用代码:

 

  try {
            String shpath = "/tmp/topdf.sh";//脚本路径,脚本中需要将源doc路径配置成变量,由下行程序调用时入参
String cmd = "param";//xshell脚本入参
            Process ps = Runtime.getRuntime().exec(shpath,cmd);//
            ps.waitFor();//等待转换结果

            BufferedReader br = new BufferedReader(new InputStreamReader(ps.getInputStream()));
            StringBuffer sb = new StringBuffer();
            String line;
            while ((line = br.readLine()) != null) {
                sb.append(line).append("\n");
            }
            String result = sb.toString();
            System.out.println(result);
        } catch (Exception e) {
            e.printStackTrace();
        }
 

 

#!/bin/sh  
  
source=$1
echo ${source} 
soffice --headless --invisible --convert-to pdf ${source} --outdir /tmp/
 

 

但发现运行一段时间命令不再响应,没有文档结果。经检查服务器,libreoffice运行良好,但soffice --convert-to 命令就是无响应无输出。查看活跃线程如下:

 


 

有两个相关的活跃实例在运行。

 

经翻阅资料,这是LO在2011年产生的一个bug,相关bug list 参考:

https://bugs.documentfoundation.org/show_bug.cgi?id=37531 

 

https://bugs.documentfoundation.org/show_bug.cgi?id=45026     



 

大体意思是LO GUI实例一旦运行过一个,再运行一个实例的话,就会出现无响应的问题。解决思路有两个:

1、杀掉所有的libreoffice实例,即将上面的两个实例杀掉

2、执行命令时增加一行参数,经测试下面两条命令均可以执行【必须保证命令的执行要有权限】:

soffice --headless --convert-to pdf ${source-file} --outdir ${target-path}  "-env:UserInstallation=file:///tmp/LibreOffice_Conversion_${USER}"

soffice --headless --convert-to pdf ${source-file} --outdir ${target-path}  -env:UserInstallation=file:///home/user/.libreoffice-alt     

 

 

程序员,除了编码,生活还应该有沉淀!

 

 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux系统下word转pdf,xls转pdf,ppt转pdf 的相关文章

  • API 网关基础

    目录 一 网关概述 二 网关提供的功能 三 常见网关系统 3 1 Netflix Zuul 3 2 Spring Cloud Gateway 3 3 Kong 3 4 APISIX 3 5 Shenyu 一 网关概述 API网关是一个服务器
  • UCenter安装时提示mysql_connect()不支持

    问题描述 安装时 提示mysql connect 不支持 请检查 mysql 模块是否正确加载 如下图 分析原因 查看php官方帮助文档得知 mysql connect是php4有php5中的函数 在php5 5 0已标记为废弃 在php7
  • 2020软件测试学科全套上课视频教程网盘免费分享

    软件测试学科全套上课视频教程网盘免费分享 合计50余天 以下是2020软件测试学习路线 为知名的培训机构视频 笔记源码分享给大家 里面可能会有瑕疵 望见谅 是小编自己在官网下载整理出来的 整理不易 分享给大家 请大家按照以下的学习线路学习
  • 想在Android应用程序中将XLS文件转换为PDF吗?看完这篇教程就懂了

    在各种情况下 您可能需要通过Internet共享Excel文件 为避免篡改 最佳做法是在共享之前将这些文件转换为PDF格式 因此 在本文中 将学习如何在Android应用程序中将Excel XLSX或XLS文件转换为PDF 另外 还将讨论E
  • web基础(二)---------列表、表格、表单

    目录 一 前言 二 正文 1 列表 1 无序列表 2 有序列表 3 自定义标签 2 表格 3 表单 1 input 根据type属性不同 展示不同效果 2 input 占位符 提示信息 3 表单域 划分提交 重置的作用域 form 4 普通
  • d3.js 小结

    D3 数据可视化库 D3 4 0 D3是目前最流行的JavaScript可视化图表库之一 D3的图表类型非常丰富 并且支持SVG格式 因此应用十分广泛 也有很多图表插件基于D3开发 比如MetricsGraphics js 在D3上构建的数
  • 20个最炫HTML5,jQuery和CSS3下拉菜单制作教程(附示例/源码)

    3 Level Navigation Menu 三级导航菜单 独具特色的导航菜单 包含CSS3渐变 多个子菜单和jQuery动画 CSS3 Minimalistic Navigation Menu 一个简单的CSS3动画导航菜单 SLIDE
  • 开源的13个Spring Boot 优秀学习项目!超53K星,一网打尽!

    往期热门文章 1 往期精选优秀博文都在这里了 2 22款终端生产力工具 效率飞起 3 又一P1故障 锅比脸圆 4 Mybatis接口Mapper内的方法为啥不能重载 5 delete后加 limit是个好习惯么 Spring Boot 算是
  • Tomcat中配置SSL

    Tomcat网站上 http tomcat apache org tomcat 5 5 doc ssl howto html Edit 20the 20Tomcat 20Configuration 20File 有相关配置SSL的介绍 建议
  • Vue3 详细教程

    文章目录 一 API 风格 1 1 选项式 API 1 2 组合式 API 二 Vue 指令 2 1 文本插值 2 2 v html 标签元素 2 3 v on 绑定事件 2 4 v show 隐藏元素 2 5 v if 消除元素 2 6
  • 分页插件pagehelper配置和 使用;

    先看结论 在看代码是实现 代码就这么多 现在来看配置 配置 1 pom xml加入这个依赖 com github pagehelper pagehelper 3 7 5 com github jsqlparser jsqlparser 0
  • Docker入门命令详解

    目录 一 Docker 简介 1 Docker引擎 2 Docker客户端 3 Docker镜像 4 Docker容器 5 Docker镜像注册中心 二 Docker的特点 1 快速运行 2 节省资源 3 便于交付 4 容易管理 三 Doc
  • 两款免费、好用的数据库连接工具

    一 Navicate Navicat是一套快速 可靠的数据库管理工具 专为简化数据库的管理及降低系统管理成本而设 它的设计符合数据库管理员 开发人员及中小企业的需要 Navicat 是以直觉化的图形用户界面而建的 让你可以以安全并且简单的方
  • Nginx中的正则匹配表达式操作符“~”和“~*“的含义

    操作符表示区分大小写的匹配 操作符表示不区分大小写的匹配 更多Nginx中正则表达式操作符的知识 请参考下面这个链接 https www cnblogs com bethal p 5514557 html
  • Python爬虫实现抓取腾讯视频所有电影-源码【实战必学】

    用python实现的抓取腾讯视频所有电影的爬虫 1 coding utf 8 2 import re 3 import urllib2 4 from bs4 import BeautifulSoup 5 import string time
  • 使用Koa2进行Web开发(二)静态文件与路由

    静态文件处理 这里选择koa static作为处理静态文件的中间件 const Koa require koa const app new Koa const serve require koa static app use serve d
  • 如何在spring框架中解决多数据源的问题

    在我们的项目中遇到这样一个问题 我们的项目需要连接多个数据库 而且不同的客户在每次访问中根据需要会去访问不同的数据库 我们以往在 spring 和 hibernate 框架中总是配置一个数据源 因而 sessionFactory 的 dat
  • 表单提交Post方法、Get方法背后的秘密

    表单大家都很熟悉 上网的时候经常会遇到表单 表单用来接受用户的输入 并将用户的输入以 name value值对 集合的形式提交到服务器进行处理 那么表单是怎样将数据提交到服务器的 服务器是怎样对表单数据进行处理的 下面我将为大家揭开表单提交
  • 问题解决:io.lettuce.core.RedisCommandTimeoutException: Command timed out after

    环境 spring boot starter 2 x 和 sprig data starter data redis 2 x 在使用 connection bRPop timeout rawKey 方法时 如果这里的timeout大于spr
  • 资深架构师分享:10个 Javascript 小技巧帮你提升代码质量

    主要介绍以下几点 提炼函数 合并重复的条件片段 把条件分支语句提炼成函数 合理使用循环 提前让函数退出代替嵌套条件分支 传递对象参数代替过长的参数列表 少用三目运算符 合理使用链式调用 分解大型类 本文会不断更新 不足之处欢迎评论区补充 1

随机推荐

  • OAuth2基础知识

    什么是OAuth 2 OAuth 2 0是一种授权协议 它的核心是授权许可和令牌机制 它通过颁发访问令牌给第三方 允许第三方代表用户访问该用户的数据 而不是直接给第三方用户名和密码 它主要用来保护Web API接口 第三方只有得到授权和访问
  • Js文件中调用其它Js函数的方法

    转载 在一个js中引用另一个js的方法 方法 步骤 一个js调用另外一个js的方法 最简单的例子就是jquery的调用 首先准备好两个js文件 然后写一个html文件 通过方法 将两个js引用到html文件中 处于下方的js文件 就可以直接
  • 电路实验

    任务一 1 非门电路 2 表格 INPUT toggle switch OUTPUT led ON 1 Black 0 OFF 0 Red 1 任务二 1 A B C AB AC 2 表格 A B C O1 O2 0 0 0 0 0 0 1
  • 【C++编程题】回文串( 动态规划×,暴力求解√ )

    问题描述 回文串 是一个正读和反读都一样的字符串 比如 level 或者 noon 等等就是回文串 给你一个字符串 问最少在字符串尾添加多少字符 可以使得字符串变为回文串 输入格式 有多组测试数据 每组测试数据第一行是一个正整数N 表示字符
  • 土地利用现状分类2020_国土空间调查、规划、用途管制用地用海分类指南来了...

    自然资源部办公厅印发指南通知 据自然资源部官网今日消息 该部办公厅已于11月17日印发 国土空间调查 规划 用途管制用地用海分类指南 试行 这部指南主要内容包括总则 一般规定 用地用海分类等 其明确了国土空间调查 规划 用途管制用地用海分类
  • Pandora设置samba(文件共享)的步骤#openwrt通用#

    此方法为在线安装 进入后台 进入系统 gt 软件包 点击刷新列表 搜索Samba 安装两个插件 luci app samba和 samba4 server 重启路由器 在服务中可以查看配置 添加用户 在winscp中 找到etc passw
  • 代码随想录算法训练营第二十九天/46.全排列、47.全排列2

    文章目录 组合 排列辨析 46 全排列 思路 注意 实现代码 47 全排列2 思路 注意 实现代码 组合 排列辨析 组合 是无序的 例如 1 2 2 1 是同一个 排列 是有序的 例如 1 2 2 1 是不一样的 46 全排列 思路 判断结
  • Maven入门学习

    Maven 1 Maven 介绍 Maven 是跨平台的项目管理工具 作为 Apache 组织提供的一个颇为成功的开源项目 它是基于项目对象模型 POM project object model 可以通过一小段描述信息 配置 来管理项目的构
  • 【MQ】kafka(四)——kafka消费者如何消费的?如何防止重复消费?如何顺序消费?

    一 前言 前面博客小编向大家分享了 kafka如何保证消息不丢失 基本是从producer和broker来分析的 producer要支持重试和acks producer要做好副本和及时刷盘落地 这篇博客呢 就跟大家一起聊一下 kafka 消
  • 多核CPU开几个线程最好

    影响最佳线程数的主要因素 1 IO 2 CPU 根据公式 服务器端最佳线程数量 线程等待时间 线程cpu时间 线程cpu时间 cpu数量 一般来说是IO和CPU IO开销较多的应用其CPU线程等待时间会比较长 所以线程数量可以开的多一些 相
  • Kubernetes控制器之Deployment

    Deployment为Pod和ReplicaSet提供了一个声明式定义 declarative 方法 用来替代以前的ReplicationController来方便的管理应用 只需要在Deployment中描述一个期望状态 Deployme
  • Spring Data 与MongoDB 集成二:操作篇(添加和删除)

    一 简介 spring data mongodb项目提供与mongdb文档数据库的集成 spring data mongodb提供了org springframework data mongodb core MongoTemplate对mo
  • keras和tensorflow的版本对应关系

    keras和tensorflow的版本对应关系 Framework Env name env parameter Description Docker Image Packages and Nvidia Settings TensorFlo
  • java生成电子发票_电子发票实例(iText)

    实例简介 1 首先右键解决方案还原 nuget包 2 运行项目 则如下图 实例截图 生成的电子发票如下 模板的内容如下 核心代码 using MakePDFDemo Model using System namespace MakePDFD
  • Android平台 Target API level 升级到 31,在Android 12上启动黑屏卡死

    项目场景 项目上架平台要求android API需要升级到31及以上才行 API升级到33版本后经测试在android12 13机型上会卡在启动页面 打开调试日志也没报错 问题描述 Android平台 Target API level 升级
  • 阿里云服务器Windows Server 2008 架设 Web 服务器教程(图文详解)

    最近刚忙完嵌入式下位机LWIP的网络通讯 希望将嵌入式设备接入云端来进行控制 买了一个阿里云Windows server 2008服务器 来搭建云服务器 过程给大家分享一下互相学习 让小白快速上手 通过win R打开命令终端 输入mstsc
  • HectorSLAMGmappingKartoSLAMCoreSLAMLagoSLAM

    1 算法介绍 A HectorSLAM scan matching Gaussian Newton equation 传感器的要求高 要求 高更新频率小测量噪声的激光扫描仪 不需要里程计 使空中无人机与地面小车在不平坦区域运行存在运用的可能
  • umi,从url中获得search参数方法

    1 路由传参 新增时不带ID search或者 query history push pathname addSelf query self yes 2 从url中取参数 import history useLocation from um
  • 最小熵原理系列:词向量的维度应该怎么选择?

    PaperWeekly 原创 作者 苏剑林 单位 追一科技 研究方向 NLP 神经网络 随着 NLP 的发展 像 Word2Vec Glove 这样的词向量模型 正逐渐地被基于 Transformer 的 BERT 等模型代替 不过经典始终
  • Linux系统下word转pdf,xls转pdf,ppt转pdf

    word转换pdf的技术方案 供参考 doc docx ppt pptx xls xlsx均支持转换 本方案是Java结合shell命令完成 不同于以往的仅依赖java组件转换或打印pdf的方案 需要目标服务器安装office套件 可选方案