- 浏览: 57433 次
- 性别:
- 来自: 重庆
最新评论
-
GB654:
[size=x-small][/size]
这个能往PPT里 ...
Jacob操作PPT -
wangbaojiao:
我现在用的事office07,现在有些参数是不支持的。我怎么查 ...
Jacob操作PPT -
归零-封:
com.jacob.com.ComFailException: ...
Jacob操作PPT -
hehaiztc:
正在找jacob操作ppt的资料,多谢博主分享
Jacob操作PPT -
蛤蟆仙人:
添加图表时 这个异常帮忙看下:Exception in thr ...
Jacob操作PPT
由于业务原因,现在要使用java动态生成PPT,以前所有使用的技术已经不能满足局方的技术,研究了差不多半个月的时间,还算是小有点成就吧,拿出来和大家分享。刚开始在网上找资料,这方面确实很缺乏,一般都是操作word和EXCEL的,PPT的甚少。在代码规范上,希望大家多多指教,有问题的可以给我发消息,一起交流和沟通。
package com.asiainfo.chn.anareport.util; import java.io.File; import com.jacob.activeX.ActiveXComponent; import com.jacob.com.ComThread; import com.jacob.com.Dispatch; import com.jacob.com.Variant; public class JacobPptUtil { 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 ppSaveAsJPG = 17; private static final String ADD_CHART = "AddChart"; private ActiveXComponent ppt; private ActiveXComponent presentation; /** * 构造一个新的PPT * @param isVisble */ public JacobPptUtil(boolean isVisble){ if(null == ppt){ ppt = new ActiveXComponent("PowerPoint.Application"); ppt.setProperty("Visible", new Variant(isVisble)); ActiveXComponent presentations = ppt.getPropertyAsComponent("Presentations"); presentation =presentations.invokeGetComponent("Add", new Variant(1)); } } public JacobPptUtil(String filePath,boolean isVisble)throws Exception{ if (null == filePath || "".equals(filePath)) { throw new Exception("文件路径为空!"); } File file = new File(filePath); if (!file.exists()) { throw new Exception("文件不存在!"); } ppt = new ActiveXComponent("PowerPoint.Application"); setIsVisble(ppt, isVisble); // 打开一个现有的 Presentation 对象 ActiveXComponent presentations = ppt.getPropertyAsComponent("Presentations"); presentation = presentations.invokeGetComponent("Open", new Variant(filePath), new Variant(true)); } /** * 将ppt转化为图片 * * @param pptfile * @param saveToFolder * @author liwx */ public void PPTToJPG(String pptfile, String saveToFolder) { try { saveAs(presentation, saveToFolder, ppSaveAsJPG); if (presentation != null) { Dispatch.call(presentation, "Close"); } } catch (Exception e) { ComThread.Release(); } finally { if (presentation != null) { Dispatch.call(presentation, "Close"); } ppt.invoke("Quit", new Variant[] {}); ComThread.Release(); } } /** * 播放ppt * * @param pptFile * @date 2009-7-4 * @author YHY */ public void PPTShow(String pptFile) { // powerpoint幻灯展示设置对象 ActiveXComponent setting = presentation .getPropertyAsComponent("SlideShowSettings"); // 调用该对象的run函数实现全屏播放 setting.invoke("Run"); // 释放控制线程 ComThread.Release(); } /** * ppt另存为 * * @param presentation * @param saveTo * @param ppSaveAsFileType * @date 2009-7-4 * @author YHY */ public void saveAs(Dispatch presentation, String saveTo, int ppSaveAsFileType)throws Exception { Dispatch.call(presentation, "SaveAs", saveTo, new Variant( ppSaveAsFileType)); } /** * 关闭PPT并释放线程 * @throws Exception */ public void closePpt()throws Exception{ if (null != presentation) { Dispatch.call(presentation, "Close"); } ppt.invoke("Quit", new Variant[]{}); ComThread.Release(); } /** * 运行PPT * @throws Exception */ public void runPpt()throws Exception{ ActiveXComponent setting = presentation.getPropertyAsComponent("SlideShowSettings"); setting.invoke("Run"); } /** * 设置是否可见 * @param visble * @param obj */ private void setIsVisble(Dispatch obj,boolean visble)throws Exception{ Dispatch.put(obj, "Visible", new Variant(visble)); } /** * 在幻灯片对象上添加新的幻灯片 * @param slides * @param pptPage 幻灯片编号 * @param type 4:标题+表格 2:标题+文本 3:标题+左右对比文本 5:标题+左文本右图表 6:标题+左图表右文本 7:标题+SmartArt图形 8:标题+图表 * @return * @throws Exception */ private Variant addPptPage(ActiveXComponent slides,int pptPage,int type)throws Exception{ return slides.invoke("Add", new Variant(pptPage), new Variant(type)); } /** * * @param pageShapes 页面的SHAPES的对象 * @param chartType 图表类型 * @param leftDistance 距离左边框的距离 * @param topDistance 距离上边框的距离 * @param width 图表的宽度 * @param height 图表的高度 * @return * @throws Exception */ public Dispatch addChart(Dispatch pageShapes,int chartType,int leftDistance,int topDistance,int width,int height)throws Exception{ Variant chart = Dispatch.invoke(pageShapes, ADD_CHART, 1, new Object[]{ new Integer(chartType),//图表类型 new Integer(leftDistance),//距离左边框的距离 new Integer(topDistance),//距离上边框的距离 new Integer(width),//图表的宽度 new Integer(height),//图表的高度 }, new int[1]);//错误类型 return chart.toDispatch(); } /** * 获取第几个幻灯片 * @param index 序号,从1开始 * @return * @throws Exception */ public Dispatch getPptPage(int pageIndex)throws Exception{ //获取幻灯片对象 ActiveXComponent slides = presentation.getPropertyAsComponent("Slides"); //获得第几个PPT Dispatch pptPage = Dispatch.call(slides, "Item", new Object[]{new Variant(pageIndex)}).toDispatch(); Dispatch.call(pptPage, "Select"); return pptPage; } /** * 添加表格 * @param pageShapes 页面对象 * @param rows 行数 * @param columns 列数 * @param leftDistance 距离左边距离 * @param topDistance 距离顶部距离 * @param width 宽度 * @param height 高度 * @return * @throws Exception */ public Dispatch addTable(Dispatch pageShapes, long rows, long columns, int leftDistance, int topDistance, int width, int height) throws Exception { return Dispatch.invoke( pageShapes, "AddTable", 1, new Object[] { new Long(rows), new Long(columns), new Integer(leftDistance), new Integer(topDistance), new Integer(width), new Integer(height) }, new int[1]) .toDispatch(); } /** * 在Selection对象上修改TEXT对象的值 * @param selectionObj * @param value * @throws Exception */ public void addTextValue(Dispatch selectionObj,String value)throws Exception{ Dispatch shapeRange=(Dispatch)Dispatch.get(selectionObj, "ShapeRange").getDispatch(); Dispatch textFrame=(Dispatch)Dispatch.get(shapeRange, "TextFrame").getDispatch(); Dispatch textRange=(Dispatch)Dispatch.get(textFrame, "TextRange").getDispatch(); Dispatch.call(textRange, "Select"); Dispatch.put(textRange,"Text",value); } /** * 将数据添加到制定的单元格内 * @param cell 单元格对象 * @param value 需要添加的数据 * @throws Exception */ public void addCellValue(Dispatch cell,Object value)throws Exception{ Dispatch cellShape = Dispatch.get(cell, "Shape").toDispatch(); Dispatch cellFrame = Dispatch.get(cellShape, "TextFrame").toDispatch(); Dispatch cellRange = Dispatch.get(cellFrame, "TextRange").toDispatch(); Dispatch.put(cellRange, "Text", value); } /** * 合并单元格,合并之后原来两个单元格的内容将放到一个单元格里面 * 如果开始单元格和结束单元之间跨几个单元格,将会一起被合并 * @param cell 开始单元格 * @param cell2 结束单元格 * @return * @throws Exception */ public void mergeCell(Dispatch cell,Dispatch cell2)throws Exception{ Dispatch.invoke(cell, "Merge", 1, new Object[]{cell2}, new int[1]); } /** * 获取表格的制定单元格 * @param tableObj 表格对象 * @param rowNum 第几行,从1开始 * @param columnRum 第几列,从1开始 * @return * @throws Exception */ public Dispatch getCellOfTable(Dispatch tableObj,int rowNum,int columnRum)throws Exception{ return Dispatch.invoke(tableObj, "Cell", Dispatch.Method, new Object[]{new Long(rowNum),new Long(columnRum)}, new int[1]).toDispatch(); } /** * 设置单元格背景颜色 * @param cellObj * @param colorIndex * @throws Exception */ public void setCellBackColor(Dispatch cellObj,int colorIndex)throws Exception{ Dispatch cellShape = Dispatch.get(cellObj, "Shape").toDispatch(); Dispatch fillObj = Dispatch.get(cellShape, "Fill").toDispatch(); Dispatch backColor = Dispatch.get(fillObj, "ForeColor").toDispatch(); Dispatch.put(backColor, "ObjectThemeColor", colorIndex); Dispatch.put(fillObj, "ForeColor", backColor); } /** * 修改表格的样式,默认样式为:{5C22544A-7EE6-4342-B048-85BDC9FD1C3A} * @param tableObj 表格对象 * @param styleId 样式ID * @throws Exception */ public void editTableSyle(Dispatch tableObj,String styleId)throws Exception{ if(null == tableObj){ throw new Exception("无效的表格对象!"); } if(null == styleId || "".equals(styleId)){ throw new Exception("无效的样式ID!"); } Dispatch.invoke(tableObj, "ApplyStyle", Dispatch.Method, new Object[]{styleId}, new int[1]); } /** * 在TABLE对象上添加列 * @param tableObj * @param beforeColumn * @throws Exception */ public void addTableColumn(Dispatch tableObj,int beforeColumn)throws Exception{ Dispatch columns = Dispatch.get(tableObj, "Columns").getDispatch(); int count = Dispatch.get(columns, "Count").getInt(); if(beforeColumn > count || beforeColumn < 1){ throw new Exception("无效的列索引!"); } Dispatch.invoke(columns, "Add", Dispatch.Method, new Object[]{beforeColumn}, new int[1]); } /** * 在TABLE对象上添加行 * @param tableObj * @param beforeColumn * @throws Exception */ public void addTableRow(Dispatch tableObj,int beforeRow)throws Exception{ Dispatch rows = Dispatch.get(tableObj, "Rows").getDispatch(); int count = Dispatch.get(rows, "Count").getInt(); if(beforeRow > count || beforeRow <1){ throw new Exception("无效的行索引!"); } Dispatch.invoke(rows, "Add", Dispatch.Method, new Object[]{beforeRow}, new int[1]); } /** * 修改单个些列的图表类型 * @param chartObj 图表对象 * @param seriIndex 系列索引,从1开始 * @param chartType 图表类型 * @throws Exception */ public void updateSeriChartType(Dispatch chartObj,int seriIndex,int chartType)throws Exception{ Dispatch Seri1 = Dispatch.call(chartObj, "SeriesCollection", new Variant(seriIndex)).toDispatch(); Dispatch.put(Seri1,"ChartType",chartType); } /** * 设置是否显示图表的数据表格,当新增一个表格时默认时不显示的 * @param chartObj 表格对象 * @param bValue 布尔值,ture为显示,false为不显示 * @throws Exception */ public void setIsDispDataTable(Dispatch chartObj,boolean bValue)throws Exception{ if(null == chartObj){ throw new Exception("无效的图表对象!"); } Dispatch.put(chartObj, "HasDataTable", bValue); } /** * 获取表格的样式ID * @param tableObj * @return * @throws Exception */ public String getTableStyleId(Dispatch tableObj)throws Exception{ Dispatch tableStyle = Dispatch.get(tableObj, "Style").toDispatch(); return Dispatch.get(tableStyle, "Id").toString(); } /** * 设置图表上是否显示数据表格 * @param chartObj * @param value * @throws Exception */ public void setHasDataTable(Dispatch chartObj,boolean value)throws Exception{ Dispatch.put(chartObj, "HasDataTable", value); } public void getGeneragePpt() throws Exception { // 生成一个新的ppt 对象 Dispatch windows = presentation.getProperty("Windows").toDispatch(); Dispatch window = Dispatch.call(windows, "Item", new Variant(1)).toDispatch(); Dispatch selection = Dispatch.get(window, "Selection").toDispatch(); //获取幻灯片对象 ActiveXComponent slides = presentation.getPropertyAsComponent("Slides"); //添加第一张幻灯片; 标题+副标题 addPptPage(slides, 1, 1); Dispatch slideRange=(Dispatch)Dispatch.get(selection, "SlideRange").getDispatch(); Dispatch shapes=(Dispatch)Dispatch.get(slideRange, "Shapes").getDispatch(); //获取幻灯片中的第一个元素 Dispatch shape1 = Dispatch.call(shapes, "Item", new Variant(1)).toDispatch(); //获取幻灯片中的第二个元素 Dispatch shape2 = Dispatch.call(shapes, "Item", new Variant(2)).toDispatch(); //选中第一个元素 Dispatch.call(shape1, "Select"); //添加值 addTextValue(selection, "测试主标题"); //操作PPT一页中的第二个shape Dispatch.call(shape2, "Select"); addTextValue(selection, "测试副标题"); //添加第二张幻灯片(标题+图表) Variant v = addPptPage(slides, 2, 8); //获取第二个PPT对象 Dispatch pptTwo = v.getDispatch(); //激活当前PPT对象 Dispatch.call(pptTwo, "Select"); //获取PPT中的shapes shapes = Dispatch.get(pptTwo, "Shapes").toDispatch(); Dispatch shapeText = Dispatch.call(shapes, "Item", new Variant(1)).toDispatch(); //操作标题 Dispatch.call(shapeText, "Select"); addTextValue(selection, "测试图表标题"); //添加图表 Dispatch chartDisp = addChart(shapes, 2, 10, 130, 700, 200); Dispatch chartObj=Dispatch.get(chartDisp, "Chart").getDispatch(); setHasDataTable(chartObj, true); Dispatch chartData=Dispatch.get(chartObj, "ChartData").toDispatch(); //Variant chartStyleV=Dispatch.get(chartObj, "ChartFont"); Dispatch workBook=Dispatch.get(chartData, "Workbook").getDispatch(); Dispatch workSheets=Dispatch.get(workBook, "Worksheets").getDispatch(); Dispatch workSheetItem = Dispatch.call(workSheets, "Item", new Variant(1)).toDispatch(); Dispatch cell = Dispatch.invoke(workSheetItem, "Range", Dispatch.Get, new Object[] { "B3" }, new int[1]).toDispatch(); Dispatch.put(cell, "Value", 12); //7606 //修改单个系列的图表类型 //Dispatch Seri1 = Dispatch.call(chartObj, "SeriesCollection", new Variant(3)).toDispatch(); //Dispatch.put(Seri1,"ChartType",4); updateSeriChartType(chartObj, 3, 4); Dispatch chartArea = Dispatch.get(chartObj, "ChartArea").toDispatch(); //表格 /*Dispatch tableDisp = addTable(shapes, 3, 4, 50, 130, 600, 300); Dispatch tableObj=Dispatch.get(tableDisp, "Table").getDispatch(); //修改表格样式 Dispatch.invoke(tableObj, "ApplyStyle", 1, new Object[]{"{5C22544A-7EE6-4342-B048-85BDC9FD1C3A}"}, new int[1]); //获取单元格 Dispatch cell = getCellOfTable(tableObj, 1, 1); Dispatch cell2 = getCellOfTable(tableObj, 2, 1); addCellValue(cell, "测试着玩的"); addCellValue(cell2, "哈哈"); //合并单元格 //mergeCell(cell, cell2); addTableColumn(tableObj, 4); addTableRow(tableObj, 3);*/ // powerpoint幻灯展示设置对象 ActiveXComponent setting = presentation.getPropertyAsComponent("SlideShowSettings"); //setting.invoke("Run"); //保存ppt presentation.invoke("SaveAs", new Variant("d:/a.ppt")); // 释放控制线程 ComThread.Release(); //closePpt(); } /** * 解析现有的PPT * @param filePath * @throws Exception */ public void invokePPTTemplate(String filePath)throws Exception{ Dispatch windows = presentation.getProperty("Windows").toDispatch(); Dispatch window = Dispatch.call(windows, "Item", new Variant(1)).toDispatch(); //获得第几个PPT Dispatch pptPage = getPptPage(1); Dispatch selection = Dispatch.get(window, "Selection").toDispatch(); Dispatch slideRange=Dispatch.get(selection, "SlideRange").getDispatch(); Dispatch shapes=Dispatch.get(slideRange, "Shapes").getDispatch(); //获取幻灯片中的第N个元素 Dispatch tableDisp = Dispatch.call(shapes, "Item", new Variant(2)).toDispatch(); //转换为Table对象 Dispatch tableObj = Dispatch.get(tableDisp, "Table").toDispatch(); //获得对象的Style的属性 Dispatch tableStyle = Dispatch.get(tableObj, "Style").toDispatch(); System.out.println(Dispatch.get(tableStyle, "Id")); //{91EBBBCC-DAD2-459C-BE2E-F6DE35CF9A28} /*//选中第一个元素 Dispatch.call(shape1, "Select"); Dispatch chartObj=Dispatch.get(shape1, "Chart").getDispatch(); Dispatch chartData=Dispatch.get(chartObj, "ChartData").toDispatch(); Dispatch workBook=Dispatch.get(chartData, "Workbook").getDispatch(); Dispatch workSheets=Dispatch.get(workBook, "Worksheets").getDispatch(); Dispatch workSheetItem = Dispatch.call(workSheets, "Item", new Variant(1)).toDispatch(); Dispatch cell = Dispatch.invoke(shape1, "Range", Dispatch.Get, new Object[] { "B3" }, new int[1]).toDispatch(); */ //修改单个系列的图表类型 //Dispatch Seri1 = Dispatch.call(chartObj, "SeriesCollection", new Variant(1)).toDispatch(); //Dispatch.put(Seri1,"ChartType","4"); //Dispatch chartArea = Dispatch.get(chartObj, "ChartArea").toDispatch(); //清楚图表内容 //Dispatch.call(chartArea, "ClearContents"); // powerpoint幻灯展示设置对象 ActiveXComponent setting = presentation.getPropertyAsComponent("SlideShowSettings"); //setting.invoke("Run"); //保存ppt //presentation.invoke("SaveAs", new Variant(filePath)); // 释放控制线程 ComThread.Release(); } public static void main(String[] strs)throws Exception{ String filePath="d:/a.ppt"; //JacobPptUtil jac = new JacobPptUtil(true); JacobPptUtil jac = new JacobPptUtil(filePath,true); //jac.getGeneragePpt(); jac.invokePPTTemplate(filePath); String templateSourcePath="d:/pptSource/统一经分模板_市场.ppt"; String PPTTargetPath="d:/pptTarget/统一经分模板_市场_new.ppt"; } }
评论
8 楼
GB654
2013-09-27
[size=x-small][/size]
这个能往PPT里插入备注吗 ??????????求解
这个能往PPT里插入备注吗 ??????????求解
7 楼
wangbaojiao
2013-05-08
我现在用的事office07,现在有些参数是不支持的。我怎么查找支持的参数呀,比如 Chart参数
6 楼
归零-封
2013-01-04
com.jacob.com.ComFailException: Invoke of: Select
Source: Microsoft Office PowerPoint 2007
Description: Shape.Select : Invalid request. To select a shape, its view must be active.
是向一个已有的ppt添加首页
getGenaragePpt()在这个函数出错
//选中第一个元素
Dispatch.call(shape1, "Select");
已有的ppt有首页或者是个新的ppt。。就不会报错。
:x
Source: Microsoft Office PowerPoint 2007
Description: Shape.Select : Invalid request. To select a shape, its view must be active.
是向一个已有的ppt添加首页
getGenaragePpt()在这个函数出错
//选中第一个元素
Dispatch.call(shape1, "Select");
已有的ppt有首页或者是个新的ppt。。就不会报错。
:x
5 楼
hehaiztc
2012-07-01
正在找jacob操作ppt的资料,多谢博主分享
4 楼
蛤蟆仙人
2012-05-16
添加图表时 这个异常帮忙看下:Exception in thread "main" com.jacob.com.ComFailException: Can't map name to dispid: Chart
3 楼
klo0704
2012-05-06
您哪块有没有 ppt,pptx 转pdf 的方法啊..我的doc,xls 都可以转了但就缺ppt 能赐教一下吗??
2 楼
kjkhi
2011-12-16
转换为图片时错误:
com.jacob.com.ComFailException: Invoke of: saveAs
Source: Microsoft PowerPoint 2010
Description: Presentation.SaveAs : Invalid request. This is not a valid filename.
请问如何解决?
com.jacob.com.ComFailException: Invoke of: saveAs
Source: Microsoft PowerPoint 2010
Description: Presentation.SaveAs : Invalid request. This is not a valid filename.
请问如何解决?
1 楼
epson2419
2011-08-02
你好,你的这篇博文太及时了。呵呵。看了下,很不错,很实用的。赞一个。但是有些地方还是不太了解的。毕竟是一个工具类。jacob第一次用,没办法。呵呵。咱俩应该是一个公司的。哈哈 哈哈 一看包名就知道的。希望能进一步的向你请教的。我叫裴宁。希望能加你的QQ。
发表评论
-
TOMCAT
2009-09-10 00:58 940Tomcat 服务器是一个免费的开放源代码的Web 应用服 ... -
如何成为好的程序员?
2009-06-23 17:39 913Q:如何成为好的程序员? Krest:你们在学校都学些什 ... -
Internet上的WWW服务与HTTP协议
2009-06-15 16:22 1130历史上,先后问世了多个具有重大社会影响的电子通信技术。第一个这 ... -
IBATIS实战中文PDF
2009-05-20 16:44 7289IBATIS实战中文PDF -
Tomcat5下 JSP 出现getOutputStream() has already been
2009-05-18 09:54 1008tomcat5下jsp出现getOutputStream() ... -
java 生成验证码
2009-03-12 15:56 888private void process(HttpServle ... -
java MD5加密
2009-03-12 15:55 1038package test; import java.secu ... -
Eclipse中JVM内存设置
2009-03-05 19:09 6507eclipse.ini内存设置 -vmarg ... -
Jquery1.2API
2009-02-11 19:56 908jquery的帮助文档,希望对大家有用! -
spring+quartz
2008-07-25 19:03 2422Spring + quartz Quartz框架提 ... -
spring乱码
2008-06-26 17:22 2552今天搭建了一套spring的架构,遇到了很多问题!乱码比较头疼 ... -
java.lang.NoClassDefFoundError: org/objectweb/asm/
2008-06-26 10:18 3311用Spring集成hibernate时,这个问题困惑我很久,当 ... -
微软面试题
2008-04-17 16:55 1032★如果你需要学习一门新的计算机语言,你会怎样做? ... -
js参考文档
2008-04-10 12:18 1576喜欢javascript的朋友,可以查看此文档,很有用! -
class反编译工具
2008-04-10 12:16 4537从网上找到了一个java反编译工具,它是一个图形化用户界面的工 ...
相关推荐
这是一个用Jacob做的一个小程序,用于控制PPT翻页的小程序,压缩包中集成了Java环境可以直接双击运行。配置文件中保留了一个websocket的接口,用来连接后台服务器,通过服务器发生指令控制PPT放映翻页,结束放映。
网上使用jacob操作ppt的代码非常少,本代码在其他例子的基础上进行扩展对ppt生成图表操作尽可能的用代码详细展示
jacob操作WPS、Office对应Word、Excel、PPT生成PDF,采用版本为jaco1.7X。
标题中的“jacob操作实例+lib”指的是使用Jacob库在Java中进行Microsoft Office文档操作的实践案例和相关库文件。Jacob(Java and .NET Bridge)是一个开源Java库,它允许Java应用程序调用.NET组件,包括对Microsoft...
打开文档、转换、保存、关闭等操作 ... wordApp.invoke("Quit", new Variant(false)); ``` 请根据实际情况调整代码,确保正确导入 Jacob 相关的类,并根据具体需求处理转换过程中的异常和细节。在提供的压缩包中...
此外,它还能与PowerPoint、Outlook等应用交互,实现邮件发送、PPT演示文稿制作等。 **注意事项** - Jacob仅支持Windows平台,因为它依赖于Windows的COM接口。 - 需要确保Jacob的版本与使用的Java版本兼容。 - 在...
Jacob的核心功能在于它通过动态链接库(DLL)桥接Java和COM(Component Object Model),使得Java程序可以处理微软的文档格式,包括doc、docx、xls、xlsx、ppt、pptx等。以下是使用Jacob进行文档、表格和PDF操作的...
**Jacob.jar及使用方法(1.17)** ...总结,Jacob.jar是一个强大的工具,可以帮助Java开发者利用COM接口与Microsoft Office进行交互,执行打印、转换文件等操作。正确配置和使用它,可以极大地扩展Java应用程序的功能。
标题提到的"windows-jacob-1.19.zip"是一个包含Jacob库的压缩包,版本号为1.19,特别适用于Windows环境,主要用于将Word、Excel、PPT文档转换为PDF格式。 1. **Jacob库介绍** Jacob库是通过JNI(Java Native ...
例如,要将PPT转换为图片,你可以先创建`PowerPoint.Application`实例,然后遍历幻灯片并保存为图片: ```java import com.jacob.activeX.ActiveXComponent; import com.jacob.com.Dispatch; import ...
按照指示操作,确保所有依赖项都已到位,包括Office软件和相应的Jacob库。 通过理解这个Demo,开发者可以了解到如何利用Jacob库实现跨平台语言与COM组件的交互,这对于需要处理大量数据转换的Java应用来说是一个...
在IT行业中,转换文档格式是一项常见的任务,尤其是将Word、Excel和PPT转换为PDF格式。"使用jacob转pdf资料"这个主题涉及到一个名为jacob的Java库,它允许开发者通过Java代码来调用Microsoft Office或WPS组件,实现...
2. **JACOB入门.ppt** - 这可能是一个PowerPoint演示文稿,提供了Jacob的基础知识和入门教程,包含了Jacob的基本用法和示例。 3. **jacob-1.17-M2.zip** - 这是Jacob的一个版本包,包含了库的jar文件和其他资源,...
Jacob 库是一个 Java 库,用于连接和操作 Office 应用程序。使用 Jacob 库可以实现将 Office 文件转换为 PDF 文件。首先,需要下载 Jacob 库的 jar 文件和 dll 文件,然后将 dll 文件放入 JDK 的 bin 目录下。接着,...
例如,我们可以使用jacob将PPT转换为PDF,将Word文档转换为PDF,甚至将Excel表格转换为PDF。这些操作主要涉及到Office的COM组件,如PowerPoint.Application、Word.Application和Excel.Application。通过jacob,Java...
- PowerPoint幻灯片操作:创建、编辑、合并PPT文件,实现自动化演示文稿的制作。 - 图像处理:通过调用COM组件,如Photoshop,处理图像文件。 四、Java与COM交互的优缺点 优点: - 跨平台:虽然Jacob本身不跨平台,...
在文件转换方面,Jacob库提供了一种有效的方法来将Word(.doc或.docx)、Excel(.xls或.xlsx)、PowerPoint(.ppt或.pptx)以及纯文本文件转换为PDF。这在办公自动化、数据处理和报告生成等领域非常有用。例如,如果...
使用前操作 1、把dll文件放在%JAVA_HOME%\bin下(注意系统是32位还是64位),也可以放在C:\Windows\System32下,如果是64位应该放在C:\Windows\SysWOW64 下。建议放在jdk的bin目录下 2、如果是在eclipse下开发,...
在IT行业中,转换文档格式是一项常见的任务,尤其在数据共享、网页发布或跨平台操作时。本主题聚焦于使用Java编程语言,通过JACOB库将Microsoft Office的Word、PowerPoint和Excel文档转换为HTML格式。这样的转换对于...
当你需要在Java程序中创建、编辑或转换Word文档,或者操作PPT,Jacob提供了这样的可能性。例如,你可以利用Jacob打开一个Word文档,读取内容,修改文本,添加图片,甚至将整个文档转换为PDF格式。 描述中提到了"1分...