700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > java xpdf 转换成html_java将Word/Excel/PDF文件转换成HTML整理

java xpdf 转换成html_java将Word/Excel/PDF文件转换成HTML整理

时间:2022-08-16 22:54:59

相关推荐

java xpdf 转换成html_java将Word/Excel/PDF文件转换成HTML整理

项目开发过程中,需求涉及到了各种文档转换为HTML或者网页易显示格式,现在将实现方式整理如下:

一、使用Jacob转换Word,Excel为HTML

“JACOB一个Java-COM中间件.通过这个组件你可以在Java应用程序中调用COM组件和Win32 libraries。”

首先下载Jacob包,JDK1.5以上需要使用Jacob1.9版本(JDK1.6尚未测试),与先前的Jacob1.7差别不大

1、将压缩包解压后,Jacob.jar添加到Libraries中;

2、将Jacob.dll放至“WINDOWS\SYSTEM32”下面。

需要注意的是:

【使用IDE启动Web服务器时,系统读取不到Jacob.dll,例如用MyEclipse启动Tomcat,就需要将dll文件copy到MyEclipse安装目录的“jre\bin”下面。

一般系统没有加载到Jacob.dll文件时,报错信息为:“java.lang.UnsatisfiedLinkError: no jacob in java.library.path”】

新建类:

1

public

class

JacobUtil

2

{3public staticfinalintWORD_HTML=8;45public staticfinalintWORD_TXT =7;67public staticfinalintEXCEL_HTML=44;89

/** *//**10 * WORD转HTML11 *@paramdocfile WORD文件全路径12 *@paramhtmlfile 转换后HTML存放路径13*/14public staticvoidwordToHtml(String docfile, String htmlfile)15

{16 ActiveXComponent app=newActiveXComponent("Word.Application");//启动word 17try18

{19 app.setProperty("Visible",newVariant(false));20 Dispatch docs=app.getProperty("Documents").toDispatch();21 Dispatch doc=Dispatch.invoke(22 docs,23"Open",24 Dispatch.Method,25

newObject[] { docfile,newVariant(false),26newVariant(true) },newint[1]).toDispatch();27

Dispatch.invoke(doc,"SaveAs", Dispatch.Method,newObject[] {28 htmlfile,newVariant(WORD_HTML) },newint[1]);29 Variant f=newVariant(false);30 Dispatch.call(doc,"Close", f);31 }32catch(Exception e)33

{34 e.printStackTrace();35 }36finally37

{38

app.invoke("Quit",newVariant[]{});39 }40 }4142

/** *//**43 * EXCEL转HTML44 *@paramxlsfile EXCEL文件全路径45 *@paramhtmlfile 转换后HTML存放路径46*/47public staticvoidexcelToHtml(String xlsfile, String htmlfile)48

{49 ActiveXComponent app=newActiveXComponent("Excel.Application");//启动word 50try51

{52 app.setProperty("Visible",newVariant(false));53 Dispatch excels=app.getProperty("Workbooks").toDispatch();54 Dispatch excel=Dispatch.invoke(55 excels,56"Open",57 Dispatch.Method,58

newObject[] { xlsfile,newVariant(false),59newVariant(true) },newint[1]).toDispatch();60

Dispatch.invoke(excel,"SaveAs", Dispatch.Method,newObject[] {61 htmlfile,newVariant(EXCEL_HTML) },newint[1]);62 Variant f=newVariant(false);63 Dispatch.call(excel,"Close", f);64 }65catch(Exception e)66

{67 e.printStackTrace();68 }69finally70

{71

app.invoke("Quit",newVariant[]{});72 }73 }7475}

76

当时我在找转换控件时,发现网易也转载了一偏关于Jacob使用帮助,但其中出现了比较严重的错误:String htmlfile = "C:\\AA";

只指定到了文件夹一级,正确写法是String htmlfile = "C:\\AA\\xxx.html";

到此WORD/EXCEL转换HTML就已经差不多了,相信大家应该很清楚了:)

二、使用XPDF将PDF转换为HTML

2、下载中文支持包

3、下载pdftohtml支持包

4、解压调试

1) 先将xpdf-3.02pl2-win32.zip解压,解压后的内容可根据需要进行删减,如果只需要转换为txt格式,其他的exe文件可以删除,只保留pdftotext.exe,以此类推;

2) 然后将xpdf-chinese-simplified.tar.gz解压到刚才xpdf-3.02pl2-win32.zip的解压目录;

3) 将pdftohtml-0.39-win32.tar.gz解压,pdftohtml.exe解压到xpdf-3.02pl2-win32.zip的解压目录;

4) 目录结构:

+---[X:\xpdf]

|-------各种转换用到的exe文件

|

|-------xpdfrc

|

+------[X:\xpdf\xpdf-chinese-simplified]

|

|

+-------很多转换时需要用到的字符文件

xpdfrc:此文件是用来声明转换字符集对应路径的文件

5) 修改xpdfrc文件(文件原名为sample-xpdfrc)

修改文件内容为: Txt代码

#

-----

begin Chinese Simplified support

package

cidToUnicode Adobe

-

GB1 xpdf

-

chinese

-

simplified\Adobe

-

GB1.cidToUnicode

unicodeMap ISO

-

-

CN xpdf

-

chinese

-

simplified\ISO

-

-

CN.unicodeMap

unicodeMap EUC

-

CN xpdf

-

chinese

-

simplified\EUC

-

CN.unicodeMap

unicodeMap GBK xpdf

-

chinese

-

simplified\GBK.unicodeMap

cMapDir Adobe

-

GB1 xpdf

-

chinese

-

simplified\CMap

toUnicodeDir xpdf

-

chinese

-

simplified\CMap

fontDir C:\WINDOWS\Fonts

displayCIDFontTT Adobe

-

GB1 C:\WINDOWS\Fonts\simhei.ttf

#

-----

end Chinese Simplified support

package

6) 创建bat文件pdftohtml.bat(放置的路径不能包含空格)

内容为: Txt代码

@echo off

set folderPath

=%

1

set filePath

=%

2

cd

/

d

%

folderPath

%

pdftohtml

-

enc GBK

%

filePath

%

exit 7) 创建类

JAVA代码

public

class

ConvertPdf

{

private staticString INPUT_PATH;

private staticString PROJECT_PATH;

public staticvoidconvertToHtml(String file, String project)

{

INPUT_PATH=file;

PROJECT_PATH=project;

if(checkContentType()==0)

{

toHtml();

} }

private staticintcheckContentType()

{

String type=INPUT_PATH.substring(INPUT_PATH.lastIndexOf(".")+1, INPUT_PATH.length())

.toLowerCase();

if(type.equals("pdf"))

return 0;

elsereturn 9;

}

private staticvoidtoHtml()

{

if(newFile(INPUT_PATH).isFile())

{

try

{

String cmd="cmd /c start X:\\pdftohtml.bat \""+ PROJECT_PATH +"\"\""+ INPUT_PATH +"\"";

Runtime.getRuntime().exec(cmd);

}catch(IOException e)

{

e.printStackTrace();

} } }

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。