Java基于Libreoffice转换word/excel/ppt等常见文档格式到pdf
Java基于Libreoffice转换word/excel/ppt等常见文档格式到pdf
Java基于转换word/excel/ppt等常见文档格式到pdf
Java面对转pdf这种需求,大多采用POI、等工具进行转换,转换精度和效率取决于相关工具的支持程度java docx转pdf,难免有些样式不符、错位等现象java docx转pdf,如果需要完全一致的转pdf的体验,还是得依赖软件,目前和均提供了对应的命令行工具来实现文件转pdf。本文介绍转pdf的方法及java调用命令行的方法。
一、安装
:直接下载
下载 | 简体中文官方网站 – 自由免费的办公套件
:使用yum安装:
yum -y
:使用apk安装:
apk add
其他操作系统可以参考官方安装说明或自行搜索安装方法。
注意Java基于Libreoffice转换word/excel/ppt等常见文档格式到pdf,在安装完成之后,找到安装目录,将对应目录加入PATH参数,一般安装位置在C: Files\,添加入PATH和JDK添加PATH一样的操作:
配置PATH示例
安装/配置完成后,在命令行中输入 –help,确认该命令行可以使用:
示例
二、转换到PDF的命令
soffice --invisible --convert-to pdf --outdir "输出文件夹" "PDF文件所在位置"
例如:
soffice --invisible --convert-to pdf --outdir "/home/pdfconvertor/result/" "/home/pdfconvertor/pdf/1.docx"
执行后,会在输出文件夹下生成与源文件名同名的pdf文件(文件后缀会改为pdf)java docx转pdf,如上面的例子,输出文件为/home///1.pdf
三、Java调用命令行转换为PDF
添加-exec依赖:
org.apache.commons
commons-exec
${commons-exec.version}
进行转换:
public static File convert(File officeFile) throws Exception {
DefaultExecutor exec = new DefaultExecutor();
File tempFolder = new File(System.getProperty("java.io.tmpdir"), "office2pdf-" + UUID.randomUUID());
// 同步等待
Semaphore semaphore = new Semaphore(1);
semaphore.acquire();
ExecuteResultHandler erh = new ExecuteResultHandler() {
@Override
public void onProcessComplete(int i) {
semaphore.release();
//转换完成逻辑
}
@Override
public void onProcessFailed(ExecuteException e) {
semaphore.release();
//转换失败逻辑
e.printStackTrace();
}
};
String command = "soffice --invisible --convert-to pdf --outdir "" + tempFolder.getAbsolutePath() + "" "" + officeFile.getAbsolutePath() + """;
System.out.println("执行office文件转换任务,命令为" + command);
exec.execute(CommandLine.parse(command), erh);
// 等待执行完成
semaphore.acquire();
File file = new File(tempFolder.getAbsolutePath() + File.separator + officeFile.getName().substring(0, officeFile.getName().indexOf(".")) + ".pdf");
if (!file.exists()) {
// 转换失败逻辑
}
return file;
}
四、字体相关问题
因转换会依赖本地字体,因此如果部署在服务器上使用时Java基于Libreoffice转换word/excel/ppt等常见文档格式到pdf,没有对应的字体会造成字体异常,此时需要在服务器上安装对应的字体。
上解决方法如下:
拷贝常用的字体文件到linux的字体文件夹/usr/share/fonts
刷新字体缓存fc-cache -fv
随后重启应用即可。
最后编辑于 :2023.02.22 23:41:44
©著作权归作者所有,转载或内容合作请联系作者
1. 本站所有资源来源于用户上传和网络,如有侵权请联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长处理!
6. 本站不售卖代码,资源标价只是站长收集整理的辛苦费!如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
7. 站长QQ号码 2205675299
资源库 - 资源分享下载网 » Java基于Libreoffice转换word/excel/ppt等常见文档格式到pdf
常见问题FAQ
- 关于资源售价和售后服务的说明?
- 代码有没有售后服务和技术支持?
- 有没有搭建服务?
- 链接地址失效了怎么办?
- 关于解压密码