|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public class ExcelToPdfToolNew { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 使用jacob实现excel转PDF | 
|---|
|  |  |  | * | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 使用jacob实现excel转PDF | 
|---|
|  |  |  | * | 
|---|
|  |  |  | */ | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public static void excelToPdf(String inputFilePath, String outputFilePath) { | 
|---|
|  |  |  | ActiveXComponent ax = null; | 
|---|
|  |  |  | Dispatch excel = null; | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | ComThread.InitSTA(); | 
|---|
|  |  |  | ax = new ActiveXComponent("Excel.Application"); | 
|---|
|  |  |  | ax.setProperty("Visible", new Variant(false)); | 
|---|
|  |  |  | //        禁用宏 | 
|---|
|  |  |  | ax.setProperty("AutomationSecurity", new Variant(3)); | 
|---|
|  |  |  | Dispatch excels = ax.getProperty("Workbooks").toDispatch(); | 
|---|
|  |  |  | Object[] obj = { | 
|---|
|  |  |  | inputFilePath, | 
|---|
|  |  |  | new Variant(false), | 
|---|
|  |  |  | new Variant(false) | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | excel = Dispatch.invoke(excels, "Open", Dispatch.Method, obj, new int[9]).toDispatch(); | 
|---|
|  |  |  | Dispatch currentSheet = Dispatch.get(excel, | 
|---|
|  |  |  | "ActiveSheet").toDispatch(); | 
|---|
|  |  |  | // 获取页面设置 | 
|---|
|  |  |  | Dispatch pageSetup = Dispatch.get(currentSheet, "PageSetup") .toDispatch(); | 
|---|
|  |  |  | Dispatch.put(pageSetup, "Orientation", new Variant(2)); | 
|---|
|  |  |  | Dispatch.put(pageSetup, "FitToPagesTall", new Variant(false)); | 
|---|
|  |  |  | Dispatch.put(pageSetup, "FitToPagesWide", new Variant(false)); | 
|---|
|  |  |  | // 获取页面设置 | 
|---|
|  |  |  | ActiveXComponent ax = null; | 
|---|
|  |  |  | Dispatch excel = null; | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | ComThread.InitSTA(); | 
|---|
|  |  |  | ax = new ActiveXComponent("Excel.Application"); | 
|---|
|  |  |  | ax.setProperty("Visible", new Variant(false)); | 
|---|
|  |  |  | //        禁用宏 | 
|---|
|  |  |  | ax.setProperty("AutomationSecurity", new Variant(3)); | 
|---|
|  |  |  | Dispatch excels = ax.getProperty("Workbooks").toDispatch(); | 
|---|
|  |  |  | Object[] obj = { | 
|---|
|  |  |  | inputFilePath, | 
|---|
|  |  |  | new Variant(false), | 
|---|
|  |  |  | new Variant(false) | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | excel = Dispatch.invoke(excels, "Open", Dispatch.Method, obj, new int[9]).toDispatch(); | 
|---|
|  |  |  | Dispatch currentSheet = Dispatch.get(excel, | 
|---|
|  |  |  | "ActiveSheet").toDispatch(); | 
|---|
|  |  |  | // 获取页面设置 | 
|---|
|  |  |  | Dispatch pageSetup = Dispatch.get(currentSheet, "PageSetup") .toDispatch(); | 
|---|
|  |  |  | Dispatch.put(pageSetup, "Orientation", new Variant(2)); | 
|---|
|  |  |  | Dispatch.put(pageSetup, "FitToPagesTall", new Variant(0)); | 
|---|
|  |  |  | Dispatch.put(pageSetup, "FitToPagesWide", new Variant(1)); | 
|---|
|  |  |  | // 获取页面设置 | 
|---|
|  |  |  | //                Dispatch.put(pageSetup, "PaperSize", pageSize); | 
|---|
|  |  |  | // 内容缩放 | 
|---|
|  |  |  | // 内容缩放 | 
|---|
|  |  |  | //                Dispatch.put(pageSetup, "Zoom", new Variant(false)); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //                Dispatch Application = Dispatch.get(currentSheet, "Application") .toDispatch(); | 
|---|
|  |  |  | //                Dispatch Application = Dispatch.get(currentSheet, "Application") .toDispatch(); | 
|---|
|  |  |  | //                Dispatch.put(pageSetup, "PaperSize", pageSize); | 
|---|
|  |  |  | //                Dispatch.put(Application, "ActivePrinter", "Microsoft Print to PDF"); | 
|---|
|  |  |  | // 内容缩放 | 
|---|
|  |  |  | // 内容缩放 | 
|---|
|  |  |  | //                Dispatch.put(pageSetup, "Orientation", new Variant(2)); | 
|---|
|  |  |  | //                Dispatch.put(pageSetup, "Zoom", new Variant(false)); | 
|---|
|  |  |  | //                Dispatch.put(pageSetup, "FitToPagesWide", new Variant(1)); | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //                Dispatch.put(pageSetup, "PaperSize",  new Variant(8)); // A3是8,A4是9,A5是11等等 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //        转换格式 | 
|---|
|  |  |  | Object[] obj2 = { | 
|---|
|  |  |  | //                PDF格式等于0 | 
|---|
|  |  |  | new Variant(0), | 
|---|
|  |  |  | outputFilePath, | 
|---|
|  |  |  | //                0=标准(生成的PDF图片不会模糊),1=最小的文件 | 
|---|
|  |  |  | new Variant(0) | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | Dispatch.invoke(excel, "ExportAsFixedFormat", Dispatch.Method, obj2, new int[1]); | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | e.printStackTrace(); | 
|---|
|  |  |  | throw e; | 
|---|
|  |  |  | } finally { | 
|---|
|  |  |  | if (excel != null) { | 
|---|
|  |  |  | Dispatch.call(excel, "Close", new Variant(false)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (ax != null) { | 
|---|
|  |  |  | ax.invoke("Quit", new Variant[]{}); | 
|---|
|  |  |  | ax = null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ComThread.Release(); | 
|---|
|  |  |  | //        转换格式 | 
|---|
|  |  |  | Object[] obj2 = { | 
|---|
|  |  |  | //                PDF格式等于0 | 
|---|
|  |  |  | new Variant(0), | 
|---|
|  |  |  | outputFilePath, | 
|---|
|  |  |  | //                0=标准(生成的PDF图片不会模糊),1=最小的文件 | 
|---|
|  |  |  | new Variant(0) | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | Dispatch.invoke(excel, "ExportAsFixedFormat", Dispatch.Method, obj2, new int[1]); | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | e.printStackTrace(); | 
|---|
|  |  |  | throw e; | 
|---|
|  |  |  | } finally { | 
|---|
|  |  |  | if (excel != null) { | 
|---|
|  |  |  | Dispatch.call(excel, "Close", new Variant(false)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (ax != null) { | 
|---|
|  |  |  | ax.invoke("Quit", new Variant[]{}); | 
|---|
|  |  |  | ax = null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ComThread.Release(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public static void main(String[] args) { | 
|---|
|  |  |  | String inputExcelPath = "D:\\4.xlsx"; | 
|---|