亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

Java使用jacob將微軟office中word、excel、ppt轉成pdf

2024-07-14 08:43:16
字體:
來源:轉載
供稿:網友

本文實例為大家分享了Java使用jacob將微軟office文檔轉成pdf的具體代碼,供大家參考,具體內容如下

在使用jacb前,我們需要去下載 jacob.jar 和 jacob-1.18-x64.dll

其次,我們需要將jacob-1.18-x64.dll放入到jdk的bin目錄下才可以使用

第三,使用jacb之前,我們需要確保office能正常使用

如果你現在使用的是maven工程,那么不好意思,現在還沒有發布正式的jacb資源文件,我們需要自定的maven依賴,如下:

<dependency> <groupId>com.jacob</groupId> <artifactId>jacob</artifactId> <version>1.7</version> <scope>system</scope> <systemPath>${basedir}/../fileConvertApp/src/main/webapp/WEB-INF/lib/jacob.jar</systemPath></dependency>

然后需要注意的是jar的地址,需要根據自己的情況修改

接下來我們貼一下具體使用的代碼片段

import java.io.File; import org.apache.log4j.Logger; import com.jacob.activeX.ActiveXComponent;import com.jacob.com.Dispatch;import com.jacob.com.Variant; /** * Converter Util *  * @author Jason * */public class OfficeConverterUtil {  /** * log */ private static Logger logger = Logger.getLogger(OfficeConverterUtil.class); private static final int WDFO_RMATPDF = 17; private static final int XLTYPE_PDF = 0; private static final int PPT_SAVEAS_PDF = 32; public static final int WORD_HTML = 8; public static final int WORD_TXT = 7; public static final int EXCEL_HTML = 44; public static final int PPT_SAVEAS_JPG = 17; // private static final int msoTrue = -1; // private static final int msofalse = 0;  /** * @param argInputFilePath * @param argPdfPath * @return */ public static boolean officeFileConverterToPdf(String argInputFilePath, String argPdfPath) { if (argInputFilePath.isEmpty() || argPdfPath.isEmpty() || getFileSufix(argInputFilePath).isEmpty()) { logger.debug("輸入或輸出文件路徑有誤!"); return false; }  String suffix = getFileSufix(argInputFilePath);  File file = new File(argInputFilePath); if (!file.exists()) { logger.debug("文件不存在!"); return false; }  // PDF如果不存在則創建文件夾 file = new File(getFilePath(argPdfPath)); if (!file.exists()) { file.mkdir(); }  // 如果輸入的路徑為PDF 則生成失敗 if (suffix.equals("pdf")) { System.out.println("PDF not need to convert!"); return false; }  if (suffix.equals("doc") || suffix.equals("docx") || suffix.equals("txt")) { return wordToPDF(argInputFilePath, argPdfPath); } else if (suffix.equals("xls") || suffix.equals("xlsx")) { return excelToPdf(argInputFilePath, argPdfPath); } else if (suffix.equals("ppt") || suffix.equals("pptx")) { return pptToPdf(argInputFilePath, argPdfPath); // return ppt2PDF(argInputFilePath, argPdfPath); }  return false; }  /** * converter word to pdf *  * @param wordPath * @param pdfPath * @return */ public static boolean wordToPDF(String wordPath, String pdfPath) { ActiveXComponent msWordApp = new ActiveXComponent("Word.Application"); msWordApp.setProperty("Visible", new Variant(false));  Dispatch docs = Dispatch.get(msWordApp, "Documents").toDispatch(); // long pdfStart = System.currentTimeMillis(); Dispatch doc = Dispatch.invoke(docs, "Open", Dispatch.Method, new Object[] { wordPath, new Variant(false), new Variant(true) }, new int[1]).toDispatch();  deletePdf(pdfPath);  Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[] { pdfPath, new Variant(WDFO_RMATPDF) }, new int[1]); // long pdfEnd = System.currentTimeMillis(); logger.debug(wordPath + ",pdf轉換完成.."); if (null != doc) { Dispatch.call(doc, "Close", false); } return true; }  /** * excel to pdf *  * @param inputFile * @param pdfFile * @return */ public static boolean excelToPdf(String inputFile, String pdfFile) { ActiveXComponent activeXComponent = new ActiveXComponent("Excel.Application"); activeXComponent.setProperty("Visible", false);  deletePdf(pdfFile);  Dispatch excels = activeXComponent.getProperty("Workbooks").toDispatch(); Dispatch excel = Dispatch.call(excels, "Open", inputFile, false, true).toDispatch(); Dispatch.call(excel, "ExportAsFixedFormat", XLTYPE_PDF, pdfFile); Dispatch.call(excel, "Close", false); activeXComponent.invoke("Quit"); return true; }  /** * ppt to pdf *  * @param inputFile * @param pdfFile * @return */ public static boolean pptToPdf(String inputFile, String pdfFile) {// ComThread.InitSTA(); ActiveXComponent activeXComponent = new ActiveXComponent("PowerPoint.Application");// activeXComponent.setProperty("Visible", new Variant(false)); Dispatch ppts = activeXComponent.getProperty("Presentations").toDispatch();  deletePdf(pdfFile);  Dispatch ppt = Dispatch.call(ppts, "Open", inputFile, false, // ReadOnly true, // Untitled指定文件是否有標題 true// WithWindow指定文件是否可見 ).toDispatch(); // Dispatch ppt = Dispatch.invoke(ppts, "Open", Dispatch.Method, new Object[] { inputFile, new Variant(false), new Variant(true) }, new int[1]).toDispatch(); // Dispatch.call(ppt, "SaveAs", pdfFile, PPT_SAVEAS_PDF);// Dispatch.call(ppt, "SaveAs", pdfFile, new Variant(PPT_SAVEAS_PDF));// Dispatch.call(ppt, "SaveAs", pdfFile, new Variant(PPT_SAVEAS_PDF));// Dispatch.invoke(ppt, "SaveAs", Dispatch.Method, new Object[] { pdfFile, PPT_SAVEAS_PDF }, new int[1]);// Dispatch.invoke(ppt, "SaveAs", Dispatch.Method, new Object[] { new Variant(PPT_SAVEAS_PDF) }, new int[1]); Dispatch.callN(ppt, "SaveAs", new Variant(pdfFile));  Dispatch.call(ppt, "Close");  activeXComponent.invoke("Quit");// ComThread.Release(); return true; }  /** * ppt to img *  * @param inputFile * @param imgFile * @return */ public static boolean pptToImg(String inputFile, String imgFile) { // 打開word應用程序 ActiveXComponent app = new ActiveXComponent("PowerPoint.Application"); // 設置word不可見,office可能有限制 // app.setProperty("Visible", false); // 獲取word中國所打開的文檔,返回Documents對象 Dispatch files = app.getProperty("Presentations").toDispatch(); // 調用Documents對象中Open方法打開文檔,并返回打開的文檔對象Document Dispatch file = Dispatch.call(files, "open", inputFile, true, true, false).toDispatch(); // 調用Document對象的SaveAs方法,將文檔保存為pdf格式 // Dispatch.call(doc, "ExportAsFixedFormat", outputFile, // PPT_TO_PDF); Dispatch.call(file, "SaveAs", imgFile, PPT_SAVEAS_JPG); // 關閉文檔 // Dispatch.call(file, "Close", false); Dispatch.call(file, "Close"); // 關閉word應用程序 // app.invoke("Quit", 0); app.invoke("Quit"); return true; }  /** * get file extension *  * @param argFilePath * @return */ public static String getFileSufix(String argFilePath) { int splitIndex = argFilePath.lastIndexOf("."); return argFilePath.substring(splitIndex + 1); }  /** * subString file path *  * @param argFilePath *   file path * @return filePaths */ public static String getFilePath(String argFilePath) { int pathIndex = argFilePath.lastIndexOf("/"); return argFilePath.substring(0, pathIndex); }  /** * 如果PDF存在則刪除PDF *  * @param pdfPath */ private static void deletePdf(String pdfPath) { File pdfFile = new File(pdfPath); if (pdfFile.exists()) { pdfFile.delete(); } } }

根據自己的調試,試驗一下吧。

另外還有一段WPS轉PDF,也貼一下,供大家參考一下

public void wps2PDF(String inputFile,String pdfFile) {   File sFile = new File(inputFile);  File tFile = new File(pdfFile);  ActiveXComponent wps = null;  try {   ComThread.InitSTA();   wps = new ActiveXComponent("wps.application");   ActiveXComponent doc = wps.invokeGetComponent("Documents").invokeGetComponent("Open", new Variant(sFile.getAbsolutePath()));    doc.invoke("ExportPdf", new Variant(tFile.getAbsolutePath()));    doc.invoke("Close");    doc.safeRelease();   } catch (Exception e) {    System.out.println(e.getMessage());   } finally {    if (wps != null) {     wps.invoke("Terminate");     wps.safeRelease();    }   ComThread.Release();  }  } 

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩在线视频首页| 亚洲欧洲日产国产网站| 自拍视频国产精品| 久久久久久噜噜噜久久久精品| 国产精品爽爽ⅴa在线观看| 亚洲高清福利视频| 日韩av不卡在线| 欧美日韩在线另类| 久久精品电影网站| 久久免费视频在线观看| 成人黄色大片在线免费观看| 在线精品播放av| 欧美成人国产va精品日本一级| 亚洲精品有码在线| 亚洲成av人乱码色午夜| 久久国产精品亚洲| 国产精品91视频| 亚洲四色影视在线观看| 亚洲国产成人久久综合一区| 国产精品对白刺激| 日本精品性网站在线观看| 国产不卡在线观看| 国产精品视频内| 91高清在线免费观看| 国产亚洲精品91在线| 国内精品小视频| 亚洲国产精品视频在线观看| 国语自产偷拍精品视频偷| 成人国产精品免费视频| 国产精品成人av在线| 国产精品自产拍在线观看中文| 色久欧美在线视频观看| 欧美大学生性色视频| 98视频在线噜噜噜国产| 最近2019中文字幕第三页视频| 久久久久久九九九| 97精品国产97久久久久久| 欧美精品久久一区二区| 亚洲美女性生活视频| 欧美成人免费va影院高清| 亚洲自拍在线观看| 欧美激情一级欧美精品| 亚洲黄色www网站| 久久久久在线观看| 国内精品久久久久影院优| 精品久久久香蕉免费精品视频| 成人精品一区二区三区电影黑人| 欧美有码在线观看视频| 亚洲精品99久久久久| 日韩在线观看免费| 欧美一级片一区| 影音先锋欧美在线资源| 一区二区三区国产视频| 亚洲直播在线一区| 粉嫩老牛aⅴ一区二区三区| 亚洲欧美国产高清va在线播| 日韩视频在线免费| 欧美日韩免费看| 国产福利精品在线| 亚洲黄色有码视频| 欧美性受xxx| 国产精品日韩在线观看| 国产欧美va欧美va香蕉在线| 国产精品老女人精品视频| 成人免费大片黄在线播放| 久久这里只有精品视频首页| 夜夜嗨av色综合久久久综合网| 色综合久久天天综线观看| 国产精品一区二区3区| 亚洲欧洲免费视频| 亚洲欧美另类中文字幕| 992tv成人免费视频| 成人黄色免费网站在线观看| 精品视频久久久| 国产精品久久久久av免费| 久久这里有精品视频| 亚洲国产女人aaa毛片在线| 久久久久久久香蕉网| 亚洲已满18点击进入在线看片| 最好看的2019的中文字幕视频| 亚洲国产精品久久久| 综合网中文字幕| 久久电影一区二区| 国产精品入口免费视| 不卡av在线播放| 欧美有码在线观看视频| 欧美精品电影在线| 午夜精品美女自拍福到在线| 久久国产色av| 欧美日韩亚洲一区二区三区| 欧美国产极速在线| 91精品视频大全| 国产精品视频一| 青青精品视频播放| 久久久国产精品亚洲一区| 成人免费淫片视频软件| 秋霞成人午夜鲁丝一区二区三区| 欧美肥老妇视频| 欧美在线观看www| 97av视频在线| 亚洲精品国精品久久99热| 亚洲男人天堂手机在线| 成人福利视频网| 在线色欧美三级视频| 久久综合九色九九| 欧美视频不卡中文| 91影视免费在线观看| 中文字幕亚洲二区| 国产精品男女猛烈高潮激情| 亚洲欧美精品一区二区| 亚洲xxxx18| 色噜噜狠狠狠综合曰曰曰88av| 国产精品h片在线播放| 亚洲综合一区二区不卡| 视频在线观看一区二区| 疯狂做受xxxx欧美肥白少妇| 久久中文字幕视频| 亚洲free性xxxx护士白浆| 国产精品久久网| 日本久久久久久久| 久久综合88中文色鬼| 欧美亚洲国产日本| 亚洲男子天堂网| 狠狠躁夜夜躁久久躁别揉| 成人免费激情视频| 欧美精品中文字幕一区| 亚洲成人国产精品| 中文字幕欧美精品在线| 欧洲中文字幕国产精品| 91色琪琪电影亚洲精品久久| 91亚洲精华国产精华| 欧美精品性视频| 日韩av中文字幕在线播放| 久久免费成人精品视频| 亚洲欧美激情视频| 欧美综合第一页| 成人激情在线播放| 国产精品私拍pans大尺度在线| 亚洲在线免费看| 色777狠狠综合秋免鲁丝| 欧美国产中文字幕| 久久久精品日本| 日本中文字幕成人| 日本欧美国产在线| 久久久电影免费观看完整版| 国产精品69精品一区二区三区| 欧美激情一区二区三区久久久| 奇米4444一区二区三区| 欧美色视频日本版| 精品自拍视频在线观看| 欧美成人合集magnet| 777国产偷窥盗摄精品视频| 亚洲视频在线看| 国产精品女人网站| 91福利视频网| 亚洲xxxx妇黄裸体| 日韩成人在线视频网站| 性欧美亚洲xxxx乳在线观看| 国产精品一二三视频| 亚洲国产精品人久久电影| 亚洲a中文字幕| 日韩在线免费av| 久久精品中文字幕| 欧美一区二区大胆人体摄影专业网站|