office文件转pdf

我们有很多时候将office文件上传,而又只想让某一部分人只能有读的操作(不能下载和修改),那这是可以将其转成pdf,然后再在前端用pdf插件将其显示。

第一步:在服务器上安装OpenOffice

第二步:引入jodconverter-core 的jar包,<dependency> <groupId>com.github.livesense</groupId><artifactId>jodconverter-core</artifactId> <version>1.0.3</version</dependency>

第三步:

import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.regex.Pattern;


import org.artofsolving.jodconverter.OfficeDocumentConverter;
import org.artofsolving.jodconverter.office.DefaultOfficeManagerConfiguration;
import org.artofsolving.jodconverter.office.OfficeManager;


/**
 * 
 * @author hwl_sz
 * 
 * @desc 需要OpenOffice第三插件的支持 ,支持window\linux\mac等系统
 */
public class Office2PDF 
{
public static final String[] OFFICE_POSTFIXS = {"doc", "docx", "xls",
"xlsx", "ppt", "pptx"};

/**
* 根据操作系统的名称,获取OpenOffice的安装目录 
* 如我的安装目录:C:/Program Files/OpenOffice 4
*/
private static String getOfficeHome() 
{
String osName = System.getProperty("os.name");
if (Pattern.matches("Linux.*", osName)) 
{
return "/opt/openoffice.org3";

else if (Pattern.matches("Windows.*", osName)) 
{
return "C:/Program Files (x86)/OpenOffice 4";

else if (Pattern.matches("Mac.*", osName)) 
{
return "/Application/OpenOffice.org.app/Contents";
}
return null;
}


/**
* 转换文件

* @param inputFilePath 转换的office源文件路径
* @param outputFilePath 输出目标文件路径
*/
private static void converterFile(String inputFilePath, String outputFilePath) 
{
File inputFile = new File(inputFilePath);
File outputFile = new File(outputFilePath);
// 假如目标路径不存在,则新建该路径
if (!outputFile.getParentFile().exists()) 
{
outputFile.getParentFile().mkdirs();
}

DefaultOfficeManagerConfiguration config = new DefaultOfficeManagerConfiguration();
// 获取OpenOffice 的安装目录
String officeHome = getOfficeHome();
config.setOfficeHome(officeHome);
// 启动OpenOffice的服务
OfficeManager officeManager = config.buildOfficeManager();
officeManager.start();

OfficeDocumentConverter converter = new OfficeDocumentConverter(
officeManager);

converter.convert(inputFile, outputFile);
System.out.println("文件:" + inputFilePath + "\n转换为\n目标文件:" + outputFile
+ "\n成功!");

officeManager.stop();
}


/**
* 将(.doc|.docx|.xls|.xlsx|.ppt|.pptx)等office文件 转化为pdf文件

* @param inputFilePath 待转换的源文件路径
* @param outputFilePath 输出的目录文件路径,如果未指定(null),则按在源文件当前目录生成同名的pdf文件
* @return 处理结果
*/
public static boolean openOffice2Pdf(String inputFilePath, String outputFilePath) 
{
boolean flag = false;
File inputFile = new File(inputFilePath);
ArrayList<String> office_Formats = new ArrayList<String>();
Collections.addAll(office_Formats, OFFICE_POSTFIXS);
if ((null != inputFilePath) && (inputFile.exists())) 
{
// 判断目标文件路径是否为空
if (office_Formats.contains(getPostfix(inputFilePath))) 
{
if (null == outputFilePath) 
{
// 转换后的文件路径
String outputFilePath_new = inputFilePath.toLowerCase().replaceAll("."
+ getPostfix(inputFilePath), ".pdf");
converterFile(inputFilePath, outputFilePath_new);
flag = true;

else 
{
converterFile(inputFilePath, outputFilePath);
flag = true;
}
}

return flag;
}




/**
* 获取文件的后缀名
*/
private static String getPostfix(String inputFilePath) 
{
String[] p = inputFilePath.split("\\.");
if (p.length > 0) 
{
return p[p.length - 1];

else 
{
return null;
}
}


/**
* @param args
*/
public static void main(String[] args) 
{
Office2PDF.openOffice2Pdf("D:/xx.pptx","D:/xx.pdf");
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值