问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用jacob将Word转换为HTML后怎样设置HTML里面的所有东西居中

发布网友 发布时间:2022-04-21 05:23

我来回答

4个回答

懂视网 时间:2022-04-21 09:44

1、介绍


Jacob 是Java-COM Bridge的缩写,它在Java与微软的COM组件之间构建一座桥梁。使用Jacob自带的DLL动态链接库,并通过JNI的方式实现了在Java平台上对COM程序的调用。至于什么是COM组件,大家自己Google吧。

2、安装和配置

Jacob是一个开源软件,它的官方站点是: http://danadler.com/jacob/ 大家可以到上面下载源代码研究,也可以直接下载编译后的二进制文件。

下载包jacob_x.x.zip,解压后有几个文件:jacob.jar、jacob-x.x-M2-x86.dll
把jacob-x.x-M2-x86.dll拷贝到%JAVA_HOME% 下的 bin 目录下,其中,%JAVA_HOME%就是JDK的安装目录。接着直接在java IDE中引用jacob.jar就可以使用了。

3、转换word为pdf、html、txt 的示例

package com.shanhy.demo.windowsoffice;import java.io.File;import com.jacob.activeX.ActiveXComponent;import com.jacob.com.ComThread;import com.jacob.com.Dispatch;import com.jacob.com.Variant;/** * * 将jacob.dll放入JDK的bin目录下 * 把jacob.jar放入项目的buildPath中(web项目放到WEB-INFlib目录下) * * @author 单红宇 * */public class ConvertToPdf {	// WORD 转换文档格式参数值:17为pdf,8为html,2为txt(支持的格式不限与此,其他格式暂为列出)	static final int wdFormatPDF = 17;// PDF 格式	static final int wdFormatHTML = 8;// HTML 格式	static final int wdFormatTXT = 2;// TXT 格式	/**	 * Word文档转换	 * 	 * @param fromfileName	 * @param toFileName	 * @author SHANHY	 */	public void wordConvert(String fromfileName, String toFileName) {		System.out.println("启动Word...");		ComThread.InitSTA(); 				long start = System.currentTimeMillis();		ActiveXComponent app = null;		Dispatch doc = null;		try {			app = new ActiveXComponent("Word.Application");//创建一个word对象			app.setProperty("Visible", new Variant(false)); //不可见打开word			app.setProperty("AutomationSecurity", new Variant(3)); //禁用宏			Dispatch docs = app.getProperty("Documents").toDispatch();//获取文挡属性						System.out.println("打开文档 >>> " + fromfileName);			//Object[]第三个参数是表示“是否只读方式打开”			doc = Dispatch.invoke(docs, "Open", Dispatch.Method, 					new Object[] { fromfileName, new Variant(false), new Variant(true) }, new int[1]).toDispatch();			File tofile = new File(toFileName);			if (tofile.exists()) {				tofile.delete();			}			int formatValue = -1;			if(toFileName.toLowerCase().endsWith(".pdf")){				formatValue = wdFormatPDF;			}else if(toFileName.toLowerCase().endsWith(".html")){				formatValue = wdFormatHTML;			}else if(toFileName.toLowerCase().endsWith(".txt")){				formatValue = wdFormatTXT;			}else{				formatValue = -1;			}			if(formatValue != -1){				System.out.println("转换文档 ["+fromfileName+"] >>> ["+toFileName+"]"); 				Dispatch.invoke(doc, "SaveAs", Dispatch.Method, 						new Object[] { toFileName, new Variant(formatValue) }, new int[1]);			}else{				System.out.println("转换文件到目标文档不被支持!["+fromfileName+"] >>> ["+toFileName+"]"); 			}						long end = System.currentTimeMillis();						System.out.println("用时:" + (end - start) + "ms.");		} catch (Exception e) {			e.printStackTrace();			System.out.println("========Error:文档转换失败:" + e.getMessage());		} finally {			Dispatch.call(doc, "Close", false);			System.out.println("关闭文档");			if (app != null)				app.invoke("Quit", new Variant[] {});		}		// 如果没有这句话,winword.exe进程将不会关闭		ComThread.Release();  ComThread.quitMainSTA(); 	}		/**	 * PPT(PowerPoint)文档转换	 * 	 * @param fromfileName	 * @param toFileName	 * @author SHANHY	 */	public void pptConvert(String fromfileName, String toFileName) {		System.out.println("启动PPT...");		ComThread.InitSTA(); 				long start = System.currentTimeMillis();		ActiveXComponent app = null;		Dispatch doc = null;		try {			app = new ActiveXComponent("Word.Application");//创建一个word对象			app.setProperty("Visible", new Variant(false)); //不可见打开word			app.setProperty("AutomationSecurity", new Variant(3)); //禁用宏			Dispatch docs = app.getProperty("Documents").toDispatch();//获取文挡属性						System.out.println("打开文档 >>> " + fromfileName);			//Object[]第三个参数是表示“是否只读方式打开”			doc = Dispatch.invoke(docs, "Open", Dispatch.Method, 					new Object[] { fromfileName, new Variant(false), new Variant(true) }, new int[1]).toDispatch();			File tofile = new File(toFileName);			if (tofile.exists()) {				tofile.delete();			}			int formatValue = -1;			if(toFileName.toLowerCase().endsWith(".pdf")){				formatValue = wdFormatPDF;			}else if(toFileName.toLowerCase().endsWith(".html")){				formatValue = wdFormatHTML;			}else if(toFileName.toLowerCase().endsWith(".txt")){				formatValue = wdFormatTXT;			}else{				formatValue = -1;			}			if(formatValue != -1){				System.out.println("转换文档 ["+fromfileName+"] >>> ["+toFileName+"]"); 				Dispatch.invoke(doc, "SaveAs", Dispatch.Method, 						new Object[] { toFileName, new Variant(formatValue) }, new int[1]);			}else{				System.out.println("转换文件到目标文档不被支持!["+fromfileName+"] >>> ["+toFileName+"]"); 			}						long end = System.currentTimeMillis();						System.out.println("用时:" + (end - start) + "ms.");		} catch (Exception e) {			e.printStackTrace();			System.out.println("========Error:文档转换失败:" + e.getMessage());		} finally {			Dispatch.call(doc, "Close", false);			System.out.println("关闭文档");			if (app != null)				app.invoke("Quit", new Variant[] {});		}		// 如果没有这句话,winword.exe进程将不会关闭		ComThread.Release(); 		ComThread.quitMainSTA(); 	}	public static void main(String[] args) {		ConvertToPdf d = new ConvertToPdf();		d.wordConvert("g:\test.docx", "g:\test.pdf");	}}

读、写Word的简单示例

import com.jacob.activeX.ActiveXComponent; import com.jacob.com.Variant; import com.jacob.com.Dispatch; public class Word { String strDir = "c:jacob_1.9"; String strInputDoc = strDir + "file_in.doc"; String strOutputDoc = strDir + "file_out.doc"; String strOldText = "[label:import:1]"; String strNewText =  "I am some horribly long sentence, so long that [insert anything]"; boolean isVisible = true; boolean isSaveOnExit = true; public Word() {  ActiveXComponent oWord = new ActiveXComponent("Word.Application");  oWord.setProperty("Visible", new Variant(isVisible));  Dispatch oDocuments = oWord.getProperty("Documents").toDispatch();  Dispatch oDocument = Dispatch.call(oDocuments, "Open", strInputDoc).    toDispatch();  Dispatch oSelection = oWord.getProperty("Selection").toDispatch();  Dispatch oFind = oWord.call(oSelection, "Find").toDispatch();  Dispatch.put(oFind, "Text", strOldText);  Dispatch.call(oFind, "Execute");  Dispatch.put(oSelection, "Text", strNewText);  Dispatch.call(oSelection, "MoveDown");  Dispatch.put(oSelection, "Text",   "nSo we got the next line including BR.n");  Dispatch oFont = Dispatch.get(oSelection, "Font").toDispatch();  Dispatch.put(oFont, "Bold", "1");  Dispatch.put(oFont, "Italic", "1");  Dispatch.put(oFont, "Underline", "0");  Dispatch oAlign = Dispatch.get(oSelection, "ParagraphFormat").    toDispatch();  Dispatch.put(oAlign, "Alignment", "3");  Dispatch oWordBasic = (Dispatch) Dispatch.call(oWord, "WordBasic").    getDispatch();  Dispatch.call(oWordBasic, "FileSaveAs", strOutputDoc);  Dispatch.call(oDocument, "Close", new Variant(isSaveOnExit));  oWord.invoke("Quit", new Variant[0]); } public static void main(String[] args) {  Word word = new Word(); } } 

4、jacob.jar的结构

jacob包括两个部分:

com.jacob.activeX: ActiveXComponent类
com.jacob.com: 其它类和元素

5、Jacob类

Jacob的结构很简单,包含以下几个类:

ActiveXComponent Class:封装了Dispatch对象,用于创建一个封装了COM组件对象的Java Object
Dispatch Class:用于指向封装后的MS数据结构。常用的方法有call,subcall,get,invoke…后面会介绍使用方法。
Variant Class:用于映射COM的Variant数据类型。提供Java和COM的数据交换。

ComException Class:异常类

6、Jacob方法

用于访问COM/DLL对象的方法,读取、修改COM/DLL对象的属性。

call method:属于Dispatch类。用于访问COM/DLL对象的方法。方法进行了重载,方便不同场合调用。返回一个Variant类型的值。
callSub method:使用方法和call一样,不过它不返回值。
get method:读取COM对象的属性值,返回一个Variant类型值。
put method:设置COM对象的属性值。
invoke method:call的另一种用法,更复杂一些。
invokesub method:subcall的另一种用法
getProperty method:属于ActiveXComponent类,读取属性值,返回一个Variant类型值。

setProperty method:属于ActiveXComponent类,设置属性值。

要注意一点:在使用Jacob时,很重要的一点是,用户必须安装有Office的应用程序。否则也就无法建立Java-COM桥,进而无法解析了。


部分内容参考: http://www.cnblogs.com/vulcans/archive/2009/09/08/1562588.html

热心网友 时间:2022-04-21 06:52

居中一般都是使用css来实现。如果你现在文件中各个内容的width已经用数字标明了,就再加上margin-left:auto;margin-right:auto;就可以了(或者简写为margin:0 auto;)如果width还没有指明,你还需要提前把width的值写上

热心网友 时间:2022-04-21 08:10

你变成html后是表格还是段落

热心网友 时间:2022-04-21 09:45

margin:0 auto
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
vivox9和x9i有什么区别 ...设置原则跟构造要求。构造柱的设置原则跟构造要求是什么_百度... ...的U型钢筋锚环要几道?在哪里可以找到依据啊 ...月末不含税库存金额1065000元,请计算门店库存天数 公蟹吃什么 公蟹吃什么东西 爬行健身操功能和原理 锻炼爬行的好处有哪些呢 爬行健身法有什么优缺点 檀木如何粘合 成田剑先生还为哪些日本动漫配音,有名一点滴。谢谢了,大神帮忙啊 为什么我的电脑经常打不开QQ问问搜搜QQ空间啊? 电脑打不开qq 为什么excel表格公式计算的结果有的能显示有的显示为### 在Excel中某单元格的公式为“=IF("学生">"学生会",True,False)”,其计算结果为??? 骑自行车.用什么东西可以把孩子带在身上.一起骑车 求一张骑着自行车男生大梁上带着女生的图片 唯美卡通人物图片,要是一男的骑自行车载着女生的,最好是心相印面巾纸几米系列那样的图案 一张图片,是一个男孩骑自行车载一个女孩,背景是有桃叶落下 计算DNA分子量为什么要减去62.05,62.05代表什么? 高中生物计算DNA分子相对分子质量的问题。 英文word怎么排版 关于word英文的排版问题? 请教高手,请问有一篇单词word文档,想要一个单词排一行并且按字母顺序排列的排版怎么弄,谢谢。 企业微信怎么辅助登陆 企业微信以前的企业长时间不登录了为什么没有了 如何导出手机百度一年的浏览记录 iPhone手机打不开蓝牙和wifi,到底是主板什么地方坏了? 苹果手机wifi蓝牙打不开怎么回事 我手机按wifi和蓝牙都打不开怎么办 三星c7被拉黑的联系人怎么弄回来 南京航空航天大学航空航天类怎么样 南京航空航天大学 怎么样? (回答满意加分) 这是手机屏幕,上面有个HD,这个HD是什么东西 想要录制一个电脑桌面上的画面视频,怎么录? 华为怎么设置在线铃声 白带怎么会像果冻一样,但还有点带血色,颜 为什么桌面那里没有显示拼音输入法,聊天都不能打字,怎么办?。 我的 电脑桌面上不显示拼音输入法不能打字 也下载下来了就是显示不出来 毕业不知道做什么,感觉学做蛋糕很不错,大家觉得怎么样? 做蛋糕前景怎么样? 做蛋糕行业怎么样? 现在做蛋糕行业怎么样? 怎么样做蛋糕更好吃 梦到以前的同学还钱给我,我没有要,什么意思啊? 六个月宝宝嗓子总是发炎怎么回事 宝宝嗓子总发炎红肿怎么办 java使用jacob客户端需要安装office,服务端需要安装吗?如果需要,服务器是Linux该如何解决? 金鱼养几条好 风水 女生节?求关于此节来历, 风水金鱼养多少条为好