记录libreoffice实现office转pdf(适用于windows、linux)

由于目前的工作跟office打交道比较多,所以才有了此篇blog,需求是实现word转换pdf方便页面展示。之前lz采用的是jacob(仅支持windows)进行转换的,但是现在服务器改成linux显然不能用了,于是网上搜罗一圈,最终决定采用LibreOffice。(前提:需要安装jdk环境)

LibreOffice中文官网:https://zh-cn.libreoffice.org/   下载合适的版本,本文下载的是6.1.6

已上传百度网盘(链接: https://pan.baidu.com/s/1hS-GUT5yXaDgFDMWq3mjXQ 提取码: 1e9z)

一:windows下实现office转pdf

安装:直接一键默认安装

环境变量:在path前加入libreoffice安装路径(如:D:\Program Files\LibreOffice\program)

进入dos窗口输入soffice 如果弹出libreoffice界面则表示安装成功

java程序实现转换操作(原理通过cmd调用libreoffice指令)

/**
     * 利用libreOffice将office文档转换成pdf
     * @param inputFile  目标文件地址
     * @param pdfFile    输出文件夹
     * @return
     */
    public static boolean convertOffice2PDF(String inputFile, String pdfFile){
        long start = System.currentTimeMillis();
        String command;
        boolean flag;
        String osName = System.getProperty("os.name");
        if (osName.contains("Windows")) {
            command = "cmd /c soffice --headless --invisible --convert-to pdf:writer_pdf_Export " + inputFile + " --outdir " + pdfFile;
        }else {
            command = "libreoffice --headless --invisible --convert-to pdf:writer_pdf_Export " + inputFile + " --outdir " + pdfFile;
        }
        flag = executeLibreOfficeCommand(command);
        long end = System.currentTimeMillis();
        logger.debug("用时:{} ms", end - start);
        return flag;
    }

    /**
     * 执行command指令
     * @param command
     * @return
     */
    public static boolean executeLibreOfficeCommand(String command) {
        logger.info("开始进行转化.......");
        Process process;// Process可以控制该子进程的执行或获取该子进程的信息
        try {
            logger.debug("convertOffice2PDF cmd : {}", command);
            process = Runtime.getRuntime().exec(command);// exec()方法指示Java虚拟机创建一个子进程执行指定的可执行程序,并返回与该子进程对应的Process对象实例。
            // 下面两个可以获取输入输出流
//            InputStream errorStream = process.getErrorStream();
//            InputStream inputStream = process.getInputStream();
        } catch (IOException e) {
            logger.error(" convertOffice2PDF {} error", command, e);
            return false;
        }
        int exitStatus = 0;
        try {
            exitStatus = process.waitFor();// 等待子进程完成再往下执行,返回值是子线程执行完毕的返回值,返回0表示正常结束
            // 第二种接受返回值的方法
            int i = process.exitValue(); // 接收执行完毕的返回值
            logger.debug("i----" + i);
        } catch (InterruptedException e) {
            logger.error("InterruptedException  convertOffice2PDF {}", command, e);
            return false;
        }
        if (exitStatus != 0) {
            logger.error("convertOffice2PDF cmd exitStatus {}", exitStatus);
        } else {
            logger.debug("convertOffice2PDF cmd exitStatus {}", exitStatus);
        }
        process.destroy(); // 销毁子进程
        logger.info("转化结束.......");
        return true;
    }  

二:Linux下实现office转pdf

安装:把下载下来的三个安装包上传到linux,采用  tar -xvf xxxxxx.tar.gz解压即可

然后进入RPMS包下,采用yum localinstall *.rpm安装rpm文件

测试是否安装成功:libreoffice6.1 -help

为了使用libreoffice创建别名

[[email protected]]# alias libreoffice=‘libreoffice6.0‘
[[email protected]]# alias
alias cp=‘cp -i‘
alias egrep=‘egrep --color=auto‘
alias fgrep=‘fgrep --color=auto‘
alias grep=‘grep --color=auto‘
alias l.=‘ls -d .* --color=auto‘
alias libreoffice=‘libreoffice6.0‘
alias ll=‘ls -l --color=auto‘
alias ls=‘ls --color=auto‘

linux下面命令行测试word转pdf(其参数与windows下的参数大体相同)

命令:libreoffice --convert-to pdf:writer_pdf_Export /usr/lib/files/白头拟稿纸.doc --outdir /usr/lib/files/

关于word转pdf中文乱码问题处理

1:查看fonts目录:cat /etc/fonts/fonts.conf | grep fon
得知字体存放位置:/usr/share/fonts

2: 把Windows下的字体C:\Windows\Fonts下的宋体,即simsun.ttc上传到linux服务器
在fonts下新建Fonts文件 把字体上传到该路径下即可

原文地址:https://www.cnblogs.com/chenpt/p/11096265.html

时间: 2024-10-19 08:16:19

记录libreoffice实现office转pdf(适用于windows、linux)的相关文章

opencv Mat 多通道c++ 操作方法(适用于Windows/Linux)

最近在做opencv 多通道操作时发现网上例子很少,为了方便记忆就自己写了个demo. 例子在vs2010 + opencv 2.4.9 编译通过,只要配置好opencv 的lib路径就可以运行了. 该方法适用于Windows/Linux下的c++ 操作,Windows 和Ubuntu 都试过没问题. #include <opencv2/opencv.hpp> #include <iostream> #pragma comment ( lib, "opencv_core2

java操作office和pdf文件java读取word,excel和pdf文档内容

在平常应用程序中,对office和pdf文档进行读取数据是比较常见的功能,尤其在很多web应用程序中.所以今天我们就简单来看一下Java对word.excel.pdf文件的读取.本篇博客只是讲解简单应用.如果想深入了解原理.请读者自行研究一些相关源码. 首先我们来认识一下读取相关文档的jar包: 1. 引用POI包读取word文档内容 poi.jar 下载地址 http://apache.freelamp.com/poi/release/bin/poi-bin-3.6-20091214.zip 

C#打开office文件,pdf文件和视频文件

打开office文件 1 需要从网站下载dsoframer.ocx文件 2 把dsoframer.ocx文件复制到c:\windows\system32目录下 开始->运行->regsvr32 dsoframer.ocx , 系统会提示DSOFramer.ocx中的DllRegisterServer成功 3 在VS中新建项目,添加引用 4 将该控件加载到工具箱(添加新选项) 5 将控件拖到窗体中 打开文件:this.axFramerControl1.Open(filepath); (备注:也有

libreoffice转换文件为pdf文件乱码问题解决办法

最近系统需要一个office文件预览功能 解决方案为使用libreoffice将office文件转换为pdf文件,然后使用swftools将pdf文件转换为swf文件 最后在前台使用flexpaper浏览swf文件,即可实现预览 环境搭建完成,转换也没有问题,但是预览效果看到所有中文全部为乱码 下载转换后的pdf文件也是乱码,由此可见时libreoffice转换这一步出现了问题 服务器转换文件乱码主要是由于没有中文字体导致的,我在ubuntu desktop系统下使用libreoffice打开o

office 转 pdf文件

找过很多地方都找不到用php实现“office 转 pdf文件”的,最后只能用Linux命令行来做了.如下: 主要就是centos+libreoffice+unoconv+Xvfb 1. 安装libreoffice 1 yum install libreoffice 2.安装unoconv 1 yum install http://pkgs.repoforge.org/unoconv/unoconv-0.5-1.el6.rf.noarch.rpm 3.安装Xvfb 1 yum install x

office转pdf windows-linux-java工具类

概述 该文档详细描述了在windows和Linux环境下安装openoffice的全过程以及用java代码实现office转pdf文件的操作,文档中以Apache_OpenOffice_4.1.5_Win_x86_install_zh-CN.exe和Apache_OpenOffice_4.1.3_Linux_x86-64_install-rpm_zh-CN.tar.gz为例. Windows: 1.安装Apache_OpenOffice_4.1.5_Win_x86_install_zh-CN.e

openoffice+pdf2swf+FlexPaper在线显示office和pdf

前提:本人的系统为Ubuntu 13.10 64位系统.本篇是我在配置好环境后一段时间写的,所以操作上可能会有也错误,因此仅供参考. 搜索在线显示office和pdf,最常见的方法就是把都转为swf,然后通过FlexPaper显示.这个方法有缺点,FlexPaper不支持所有浏览器(我只能在chrome中使用,firefox要进行设置) 我用的系统是Ubuntu 13.10 64位 一下所提到的软件,我都会在附件中分享 一.openoffice安装 下载附件中的Apache_OpenOffice

aspose实现Office转Pdf

aspose实现Office转Pdf关键代码: jar包: aspose-words-14.6.0.jar aspose-cells-10.8.jar aspose.slides-14.4.0.jar aspose-diagram-2.1.0.jar protected void realTransform(InputStream in, OutputStream out) throws IOException     {       String lowerFileName = this.fi

office与pdf之间的相互转换

office大家可能都已运用自如了,可是在当前使用比较流行的pdf格式上,还存在些问题.如:pdf不能编辑怎么办.pdf怎么转换成word,excel,ppt...,今天小编在这里与大家分享一个技巧,即:office与pdf之间的相互转换 方法  1.由于office本身并不具备转换功能,故需借助第三方工具进行office与pdf之间的相互转换了.  PS:第三方工具一般都是收费的,这里小编以在线转换为例,因为其免费. 步骤  1.用百度搜索引擎搜索“pdf转换”,并点击页面进入在线转换网站.