java word转pdf

原文链接:http://blog.csdn.net/m0_37568521/article/details/78545887

1、上传:

// 上传文件的路径
String filePathFinal = getRequest().getSession().getServletContext().getRealPath("uploadFiles/resourceManage") + "/";
if (!file[1].isEmpty()) {
	//获取文件名  
	String fileName = file[1].getOriginalFilename();
	//文件扩展名  
	String extName = fileName.substring(fileName.lastIndexOf("."));
	String newNameUUID = this.get32UUID();  
	String newName = newNameUUID + extName;
	String filePath = filePathFinal + newName;  
	// 转存文件  
	file[1].transferTo(new File(filePath));  
	if("doc".equals(extName.substring(1, extName.length())) || "docx".equals(extName.substring(1, extName.length()))){
		ActiveXComponent app = null;
		try {
			app = Doc2Pdf.docToPdf(filePath, filePathFinal + newNameUUID + ".pdf");
		} catch (Exception e) {
			System.out.println("转换失败" + e.getMessage());
		} finally {
			// 关闭office
			app.invoke("Quit", 0);
		}
		newName = newNameUUID + ".pdf";
	}
	pd.put("TEXTBOOK_URL","uploadFiles/resourceManage/" + newName);
}
2、Doc2Pdf.java

import java.io.File;

import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;

public class Doc2Pdf {

	public static void main(String[] args) {
		ActiveXComponent app = null;
		try {
			app = docToPdf("f:/2pdf/1234.doc", "f:/2pdf/1234.pdf");
		} catch (Exception e) {
			System.out.println("转换失败" + e.getMessage());
		} finally {
			// 关闭office
			app.invoke("Quit", 0);
		}
	}

	public static ActiveXComponent docToPdf(String wordFile, String pdfFile)
			throws Exception {
		ActiveXComponent app = null;
		System.out.println("开始转换...");
		// 开始时间
		long start = System.currentTimeMillis();
		// 打开word
		app = new ActiveXComponent("Word.Application");
		// 设置word不可见,很多博客下面这里都写了这一句话,其实是没有必要的,因为默认就是不可见的,如果设置可见就是会打开一个word文档,对于转化为pdf明显是没有必要的
		// app.setProperty("Visible", false);
		// 获得word中所有打开的文档
		Dispatch documents = app.getProperty("Documents").toDispatch();
		System.out.println("打开文件: " + wordFile);
		// 打开文档
		Dispatch document = Dispatch.call(documents, "Open", wordFile, false,
				true).toDispatch();
		// 如果文件存在的话,不会覆盖,会直接报错,所以我们需要判断文件是否存在
		File target = new File(pdfFile);
		if (target.exists()) {
			target.delete();
		}
		System.out.println("另存为: " + pdfFile);
		// 另存为,将文档报错为pdf,其中word保存为pdf的格式宏的值是17
		Dispatch.call(document, "SaveAs", pdfFile, 17);
		// 关闭文档
		Dispatch.call(document, "Close", false);
		// 结束时间
		long end = System.currentTimeMillis();
		System.out.println("转换成功,用时:" + (end - start) + "ms");
		return app;
	}
}

注:dll文件,放在jdk文件下面的bin目录下,web项目添加dll文件后需重新添加jdk,电脑要能够打开word的。

jar包下载:链接: https://pan.baidu.com/s/1hupfzyW 密码:r3vs
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值