|  |  | 
 |  |  |  | 
 |  |  | 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(0)); | 
 |  |  |                 Dispatch.put(pageSetup, "FitToPagesWide", new Variant(1)); | 
 |  |  |                 // 获取页面设置 | 
 |  |  |         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:\\3.xlsx"; | 
 |  |  |         String outputPdfPath = "D:\\33.pdf"; | 
 |  |  |         String inputExcelPath = "D:\\4.xlsx"; | 
 |  |  |         String outputPdfPath = "D:\\44.pdf"; | 
 |  |  |  | 
 |  |  |         excelToPdf(inputExcelPath, outputPdfPath); | 
 |  |  |     } |