从liberoffce生成excel

在Windows下使用LibreOffice将Office文档(word、ppt、excel)转换成PDF(Java)。

第一步:安装LibreOffice for Windows。

1.1去官网LibreOffice。

. libreoffice.org/

1.2下载

1.2.1第一步:进入官网,点击下载。

1.2.2第二步:选择适合自己系统的版本。

1.2.2第三步:在红框中点击下载。

1.3安装和配置

1.3.1第一步:双击下载的文件。

1.3.2第二步:点击下一步。

1.3.3第三步:在这里选择自定义。

1.3.4第四步:可以使用这里默认的路劲或者选择自己安装路劲。

1.3.5第五步:点击下一步。

1.3.6第六步:点击安装。

1.3.7第7步:如果windows10 = >右键单击鼠标选择Attribute = & gt高级系统设置= & gt环境变量= & gt找到系统环境变量path,创建并添加路径D:\LibreOffice\program(注意这个路径是根据自己安装的路劲配置的,我的安装在D盘下)。

1.3.8步骤8然后windows+R打开cmd命令窗口= & gt输入officeopen libre office表示安装成功。

第二步:用java代码操作LibreOffice将(doc,ppt,xls)文件转换成PDF文件。

1.1: Open IDEA或eclipse创建SpringBoot项目。

pom.xml

& lt?xml版本="1.0 "编码="UTF-8 "?& gt& ltproject xmlns = " . Liu app . workable . converter & lt;/groupId & gt;

& ltartifactId & gt可工作转换器& lt/artifact id & gt;

& lt版本& gtv 1 . 4 . 2 & lt;/version & gt;

& lt/dependency & gt;

& lt依赖性& gt

& ltgroupId & gtorg . spring framework . boot & lt;/groupId & gt;

& ltartifactId & gt弹簧启动起动器测试& lt/artifact id & gt;

& lt范围& gt测试& lt/scope & gt;

& lt/dependency & gt;

& lt/dependencies & gt;

& lt构建& gt

& lt插件& gt

& lt插件& gt

& ltgroupId & gtorg . spring framework . boot & lt;/groupId & gt;

& ltartifactId & gtspring-boot-maven-plugin</artifact id & gt;

& lt/plugin & gt;

& lt/plugins & gt;

& lt/build & gt;& lt/project & gt;12345678910111213141516171819202122232425262728293031323334353637383940

1.2创建ConvertOfficePDFUtils.java类。自己取文件名。

/**

* @描述libreoffice工具类

* @作者holle

* @create 2020/12/24

* @自1.0.0

*/package com . file . preview . utils;导入org . slf4j . logger;导入org . SLF 4j . logger factory;导入org . spring framework . stereotype . service;导入Java . io . io exception;导入Java . io . inputstream;@ service public class ConvertOfficePDFUtils {

private static Logger Logger = Logger factory . get Logger(convertofficepdfutils . class);

/**

*使用libreOffice将Office文档转换为pdf。

* @param inputFile?目标文件地址

* @param pdfFile输出文件夹

* @返回

*/

public static boolean convertOfficePDF(String input file,String pdfFile){

long start = system . current time millis();

字符串命令;

布尔标志;

string osName = system . getproperty(" OS . name ");

if(osname . contains(" Windows ")){

command = " cmd/c start soffice-headless-invisible-convert-to pdf:writer _ pdf _ Export "+input file+"-outdir "+pdf file;

}否则{

command = " libre office-headless-invisible-convert-to pdf:writer _ pdf _ Export "+input file+"-outdir "+pdf file;

}

flag =executeLibreOfficeCommand(命令);

long end = system . current time millis();

Logger.debug ("Time: {} ms ",end-start);

返回标志;

}

/**

*执行命令指令

* @param命令

* @返回

*/

公共静态布尔executeLibreOfficeCommand(字符串命令){

Logger.info("开始转换……");

工艺流程;//进程可以控制子进程的执行或者获取子进程的信息。

尝试{

logger . debug(" convertoffice 2 pdf cmd:{ } ",命令);

process = Runtime.getRuntime()。exec(命令);exec()方法指示Java虚拟机创建一个子进程来执行指定的可执行程序,并返回子进程对应的进程对象实例。

//下面两个可以得到iostream。

InputStream errorStream = process . get errorStream();

InputStream InputStream = process . getinputstream();

} catch (IOException e) {

logger . error(" convertoffice 2 pdf { } error ",命令,?e);

返回false

}

int exit status = 0;

尝试{

exit status = process . wait for();//等待子流程完成后再执行。返回值是子线程的返回值,返回0表示正常结束。

//接受返回值的第二个方法

int I = process . exit value();//执行后接收返回值。

logger . debug(" I-"+I);

} catch (InterruptedException e) {

logger . error(" interrupted exception?convertOffice2PDF { }”,命令,e);

返回false

}

if (exitStatus!= 0) {

logger . error(" convertoffice 2 pdf cmd exit status { } ",exit status);

}否则{

logger . debug(" convertoffice 2 pdf cmd exit status { } ",exit status);

}

process . destroy();//销毁子进程

Logger.info("转换结束...");

返回true

}} 1234567891011121314151617181920212223242526272829303132333435363738 3940414243444546474849505152535455565758596061626364656667686970717273747576777879

1.3创建一个测试类

/**

* @描述测试类

* @作者holle

* @create 2020/12/24

* @自1.0.0

*/package com . test;导入com . file . preview . filepreviewapplication;导入com . file . preview . utils . convertofficepdfutils;导入org . JUnit . test;导入org . JUnit . runner . run with;导入org . spring framework . boot . test . context . spring boot test;导入org . spring framework . test . context . JUnit 4 . spring JUnit 4 class runner;导入javax . annotation . resource;导入Java . io . io exception;@ run with(spring JUnit 4 class runner . class)@ spring boot test(classes = file previe application . class)公共类TestOffice {

@资源

private ConvertOfficePDFUtils ConvertOfficePDFUtils;

@测试

public void JunintTestPDF(){

long start = system . current time millis();

string src path = " C:/Users/holler/Desktop/*/*。docx ",des path = " C:/Users/holler/Desktop/* ";

字符串命令= " ";

string osName = system . getproperty(" OS . name ");

if(osname . contains(" Windows ")){

//输入cmd命令;Add: srcPath表示文件所在的路径;文件输出的路径。

command = " so ffice-headless-convert-to pdf "+src path+"-outdir "+desPath;

convertofficepdfutils . executelibreofficecommand(命令);

}

long end = system . current time millis();

system . out . println(" Time:{ } ms "+(end-start));

}

} ?1234567891011121314151617181920212223242526272829303132333435363738

path+"-outdir "+desPath;

convertofficepdfutils . executelibreofficecommand(命令);

}

long end = system . current time millis();

system . out . println(" Time:{ } ms "+(end-start));

}

}