使用Java代码将word、execl、ppt文件转换为pdf格式

使用OpenOffice转换

前言:通过第三方工具openoffice,将word、excel、ppt等文件转换为pdf文件支持在线 预 览;官网地址:http://www.openoffice.org/download/

一、安装OpenOffice

链接: https://pan.baidu.com/s/1pTCL-U5TuKLTp4Uz5Fceng
提取码: xhdf

1、打开运行程序 这里是安装向导首界面 点击下一步按钮

在这里插入图片描述

2、点击浏览按钮 选择安装目录路径,输入使用的用户 以及选择用户权限 点击安装

在这里插入图片描述
如图所示
在这里插入图片描述

3、输入使用的用户 以及选择用户权限 点击下一步

在这里插入图片描述

4、这里勾选自定义安装,点击下一步,如果这里勾选的是 通常 会默认安装到c盘,如果是代码启动,目录要指定到c盘的

在这里插入图片描述

5、把用不到的功能禁用,并指定到同一目录下方便管理,点击下一步

在这里插入图片描述

6、继续下一步

在这里插入图片描述
在这里插入图片描述

7、安装完成

在这里插入图片描述

8、启动服务 打开cmd 切换到安装目录program下(如果组件安装选的是 通常,组件会安装到c盘
// 粘贴此命令
soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard

在这里插入图片描述

二、引入jar包

commons-cli-1.2.jar
commons-io-1.4.jar
jodconverter-2.2.2.jar
jodconverter-cli-2.2.2.jar
juh-3.0.1.jar
jurt-3.0.1.jar
ridl-3.0.1.jar
slf4j-api-1.5.6.jar
slf4j-jdk14-1.5.6.jar
unoil-3.0.1.jar
xstream-1.3.1.jar

链接: https://pan.baidu.com/s/1CNBA0LM5GAoLIIC-DIPVxA
提取码: 6u3k

三、创建工具类

public class OpenOfficeUtil {
   

	private static OpenOfficeUtil doc2HtmlUtil;

	/**
	 * 获取Doc2HtmlUtil实例
	 */
	public static synchronized OpenOfficeUtil getDoc2HtmlUtilInstance() {
   
		if (doc2HtmlUtil == null) {
   
			doc2HtmlUtil = new OpenOfficeUtil();
		}
		return doc2HtmlUtil;
	}

	/**
	 * 转换文件成html
	 * @param inputStream
	 * @param path 路径
	 * @param type 文件类型
	 * @return
	 * @throws IOException 
	 */
	public String fileToHtml(InputStream inputStream, String path,String type) throws IOException {
   
		Date date = new Date();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
		String timesuffix = sdf.format(date);
		String docFileName = null;
		String htmFileName = null;
		if("doc".equals(type)){
   
			docFileName = "doc_" + timesuffix + ".doc";
			htmFileName = "doc_" + timesuffix + ".html";
		}else if("docx".equals(type)){
   
			docFileName = "docx_" + timesuffix + ".docx";
			htmFileName = "docx_" + timesuffix + ".html";
		}else if("xls".equals(type)){
   
			docFileName = "xls_" + timesuffix + ".xls";
			htmFileName = "xls_" + timesuffix + ".html";
		}else if("ppt".equals(type)
您好,我可以回答这个问题。您可以使用Apache POI和Apache Parquet库来实现这个转换。首先,您需要使用POI库读取Excel文件中的数据,然后将数据转换为Parquet格式并写入Parquet文件。具体实现可以参考以下代码示例: ```java import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.WorkbookFactory; import org.apache.parquet.hadoop.ParquetWriter; import org.apache.parquet.hadoop.metadata.CompressionCodecName; import org.apache.parquet.schema.MessageType; import org.apache.parquet.schema.MessageTypeParser; import org.apache.parquet.schema.Types; import org.apache.parquet.schema.Types.MessageTypeBuilder; import org.apache.parquet.schema.Types.PrimitiveTypeBuilder; public class ExcelToParquetConverter { public static void main(String[] args) throws IOException { // 读取Excel文件 Sheet sheet = WorkbookFactory.create(new File("input.xlsx")).getSheetAt(); // 构建Parquet文件的Schema MessageType schema = buildSchema(sheet); // 创建Parquet文件的Writer ParquetWriter<Row> writer = createWriter(schema, "output.parquet"); // 将Excel文件中的数据转换为Parquet格式并写入Parquet文件 for (Row row : sheet) { List<Object> values = new ArrayList<>(); for (Cell cell : row) { values.add(getCellValue(cell)); } writer.write(new org.apache.parquet.hadoop.example.GroupWriteSupport().toGroup(schema, values)); } // 关闭Parquet文件的Writer writer.close(); } private static MessageType buildSchema(Sheet sheet) { MessageTypeBuilder builder = Types.buildMessage(); builder.setName(sheet.getSheetName()); for (int i = ; i < sheet.getRow().getLastCellNum(); i++) { String columnName = sheet.getRow().getCell(i).getStringCellValue(); PrimitiveTypeBuilder columnBuilder = builder.primitive(columnName, Types.PrimitiveType.PrimitiveTypeName.BINARY); columnBuilder.optional(1); } return builder.named(sheet.getSheetName()); } private static ParquetWriter<Row> createWriter(MessageType schema, String outputPath) throws IOException { return org.apache.parquet.hadoop.ParquetWriter.builder(new org.apache.parquet.hadoop.Path(outputPath)) .withWriteMode(org.apache.parquet.hadoop.ParquetFileWriter.Mode.OVERWRITE) .withCompressionCodec(CompressionCodecName.SNAPPY) .withRowGroupSize(ParquetWriter.DEFAULT_BLOCK_SIZE) .withPageSize(ParquetWriter.DEFAULT_PAGE_SIZE) .withSchema(schema) .build(); } private static Object getCellValue(Cell cell) { switch (cell.getCellType()) { case STRING: return cell.getStringCellValue(); case NUMERIC: return cell.getNumericCellValue(); case BOOLEAN: return cell.getBooleanCellValue(); case FORMULA: return cell.getCellFormula(); default: return null; } } } ``` 希望这个示例对您有所帮助。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值