TA的每日心情 | 衰 2021-2-2 11:21 |
---|
签到天数: 36 天 [LV.5]常住居民I
|
一:测试平台 win7 64位系统 b3 G# v- ~9 Z1 ~% h; `" S# h
二:准备软件 OpenOffice、swftools! _$ i! d- o, i( A: U0 L
OpenOffice 下载地址:http://www.openoffice.org/download/index.html
2 _6 h/ D! S' `# eswftools下载地址:http://www.swftools.org/download.html
8 c9 H- Q) q- H, n三:测试代码( Q; h/ R/ J( W! K6 w
1、conf.properties 软软件路径配置) `1 \5 I1 Y" C' u0 @1 o- K
- OpenOffice_HOME = C:/Program Files (x86)/OpenOffice 4) h6 j/ m! z1 l' T
6 j) j2 S) r" `. h- SWFTools_HOME = D:/SWF/SWFTools
复制代码 第一行 是OpenOffice 的安装路径 安装的时候请记住。
$ c9 ~* u* r% }0 T第二行 是swftools的安装路径。
2 U6 E* i! f0 q0 y; l你可以自定义安装路径最好放到一起、便于管理。
# H l$ m* p0 ]* L8 A# B+ k$ ]- _2、文档转换
+ O1 r+ D8 d1 s0 _$ t- /**+ c* [+ _! m# V+ {: F
- * 将odt、doc、docx、ppt或pptx格式的文件转换为pdf文件,如果文件后缀是pdf,则直接返回true。
8 I, e0 o+ I: n2 I' _ - * . T2 w# E7 O- q1 N. d; J4 B ]
- * fileSuffix 文件的后缀。
5 e/ i6 c1 o% X! g* I - */) q5 H N4 X4 {
- private boolean converToPdf(String sourceFilePath, String pdfFileSavePath){5 F2 Z' e* m. g5 R" p
- File sourceFile = new File(sourceFilePath);
1 y7 m7 m8 S7 L+ r - if (sourceFile.exists()) {0 m4 ~) _: U; D. V* F
- String OpenOffice_HOME = ConfProperties.getOpenOfficeHome();//OpenOffice的安装根目录, z4 f- Z, l8 a# @- K: m9 S
- String command = OpenOffice_HOME + "/program/soffice.exe -headless -accept="socket,host=127.0.0.1,port=8100;urp;"";/ H* c8 Y3 N$ v6 ~/ ~
- System.out.println("command"+command);. ~3 n) s# Z- P8 t
- try {1 v) D( T1 I I& j
- Process process = Runtime.getRuntime().exec(command);//启动OpenOffice的服务6 P3 s6 s' Q2 e0 L p" S5 S% y
- OpenOfficeConnection connection = new SocketOpenOfficeConnection("127.0.0.1", 8100);
; z+ ~0 m2 f6 E4 ] R j6 r# n8 p - connection.connect();. k2 m0 I: b) G# h% z9 ?7 Q$ K- \
- if(connection.isConnected()){//如果连接成功
9 X* M7 x+ z6 I9 S - DocumentConverter converter = new OpenOfficeDocumentConverter(connection);, j, E; Q4 h- F8 o6 P
- converter.convert(sourceFile, new File(pdfFileSavePath));
! W+ h3 E; N9 X: Y& Z. w - connection.disconnect();// close the connection4 b* @/ B9 l* Q: c) ^0 Q) K
- process.destroy();// 封闭OpenOffice服务的进程
" Z; q/ _/ b% a& G* [' B - System.out.println("****pdf转换成功,PDF输出:" + pdfFileSavePath+ "****");
, |, P" r6 D3 O7 \# A - return true;
! C9 |, M R% o7 I - }else{
; U/ [; z6 `! v2 W9 _ - return false;//swf转换器异常,openoffice连接失败!
7 `% g$ `+ T/ m+ M6 u, Z - }
$ _% y! P$ t2 q, m( G3 P2 a' n - } catch (ConnectException e) {+ t( d1 Y L4 i: t/ v
- e.printStackTrace();
3 _% W1 Q) X0 r/ x) J, L+ ~+ [3 k/ W2 B% h - System.out.println("****swf转换器异常,openoffice服务未启动!****");
/ T# S$ ?' }! @4 @ - return false;- L- J/ v2 ~& {" B, V
- } catch (OpenOfficeException e) {/ B5 s. ]7 l+ V* z+ u
- e.printStackTrace();
9 j" a0 @; H4 ^9 t% F1 t0 T# u2 ^ - System.out.println("****swf转换器异常,读取转换文件失败****");( g& m% N; g5 d- Q4 Y- v! M- V2 K
- return false;$ X8 e1 @% q! f1 }, {* X( l
- } catch (Exception e) {
9 _$ F( g; _7 K' [ - e.printStackTrace();% N4 u" P0 S8 ` P1 D" v
- return false;8 P4 h& F! o9 x8 Q$ B, U( A* l9 U- {5 N
- }7 j- r. L- b/ V
- } else {
! @& \" }, w2 u( L9 }9 I, \# S - System.out.println("****swf转换器异常,需要转换的文档不存在,无法转换****");! L6 ~! u+ c: R. ~
- return false;3 w$ a8 Y0 b, t/ @" W! ?) }. e7 V
- }
3 D. ?! e2 H+ r& C2 @ - }
复制代码 将pdf文件转换为swf文件:2 i# Y* g# U; M4 W; f0 \# O
- /**
0 y* M; J4 {' b) ~+ t2 A( @ - * 将pdf文件转换为swf文件。
6 P! G e! A$ U( s4 F4 F - *
" w- h$ s: W3 s% ?4 d - * @author ghj/ t) f" r* q+ }- a
- */9 o( E8 d8 N- o. Z; w' N
- private Map<String, String> converFromPdfToSwf(String pdfFilePath,String swfFileSavePath){% b9 P4 K2 ?3 D( _9 X
- String OS = System.getProperty("os.name").toLowerCase(); R5 V* D7 }4 f+ c$ D( }$ f
- Map<String, String> returnMap = new HashMap<String, String>();
- J# t- F. j$ K0 ~1 [. B - File pdfFile = new File(pdfFilePath);" J6 H# a+ E( I5 F/ r* l A
- Runtime r = Runtime.getRuntime();$ p0 g- w" d; E4 Q9 U
- if (pdfFile.exists()) {
$ P% j" D& q5 Q1 j - String SWFTools_HOME = ConfProperties.getSWFToolsHome();// SWFTools的安装根目录5 z! i2 i# Y4 o) `* r# x3 f
- try {
' m- B0 v- c- O# e! n. S T - if (OS.indexOf("windows")>=0) {// windows环境处理
6 T1 E k8 K4 x - Process process = r.exec(SWFTools_HOME+"/pdf2swf.exe "+ pdfFilePath + " -s flashversion=9 -o "+ swfFileSavePath);
! U N- t% R3 I/ K - System.out.print(loadStream(process.getInputStream()));
* q9 c8 M. ~( R( k+ Z5 n4 @ - System.err.print(loadStream(process.getErrorStream()));3 ~) Y$ z+ z5 o: H
- System.out.print(loadStream(process.getInputStream()));
4 T- D. P8 e- v. `* z - System.err.println("****swf转换成功,文件输出:"+ swfFileSavePath + "****");
' @& T9 @$ F. I v - process.destroy();// 销毁进程
3 X7 C+ A! B2 } - } else if (OS.indexOf("linux")>=0) {// linux环境处理: J3 H; b; E( d/ ?! s
- Process process = r.exec(SWFTools_HOME+"/pdf2swf "+ pdfFilePath + " -o " + swfFileSavePath + " -T 9");9 f- t7 @) K, ?) N( a" `: Z0 T/ G
- System.out.print(loadStream(process.getInputStream()));7 _0 z( X- X& R( R
- System.err.print(loadStream(process.getErrorStream()));: I H7 x1 D( Z# d9 F4 h
- System.err.println("****swf转换成功,文件输出:"+ swfFileSavePath + "****");
; A/ K5 j W6 k, u3 b0 t2 r - process.destroy();// 销毁进程
8 j0 b2 y4 W6 k& C - }
0 _* ^: ~, y0 F9 t) A/ Q - if (pdfFile.exists()) {- a" f( U0 r( J( x$ M8 h6 Q/ ?
- pdfFile.delete();//转换成功以后删除上传的pdf文件和转换的pdf文件。
* F. ^. f+ s% g' Q5 w9 | - }
. R/ R5 ^/ {8 u( v% m - returnMap.put("status", "true"); g' I6 n" R/ h: q1 _% K
- returnMap.put("swfFileName", swfFileSavePath.substring(swfFileSavePath.lastIndexOf("/")+1));//便于获取转换后swf文件的名字/ Z7 d! r( y% C$ Q& S0 f
- } catch (IOException e) {
: I4 c7 }7 W& F) n - e.printStackTrace();
% H4 n+ S e0 m% W! t& V$ n - returnMap.put("status", "false");7 g& \# s. _3 V2 l4 k. R8 P0 `: z
- }
6 q/ ^, G C8 M" W# ` - return returnMap;
- a( s( \( I( a: ^9 s# S - } else {# a; \( `" d2 S8 K- V" q
- System.out.println("****pdf不存在,无法转换****");
; H7 S3 v5 }$ |5 B* [ - returnMap.put("status", "false");
% S/ y; E V- q, h# R - return returnMap;
- I0 f3 ]( j6 w9 M* I4 k - }" I& D* ~2 a0 a0 [8 v; C R6 ?
- }
复制代码 % P5 B1 D9 ^; h+ G) K, R
四:运行项目测试项目前 请先运行安装好的OpenOffice、swftools0 D9 y& ]. P. D! _: c8 a
测试页面:: d. _- R" A- ]
- V* m$ l9 y+ x5 m8 v" f. }2 f( y. L& D
6 s& Y0 u3 D I0 x# a5 F, N9 J5 F
; ^! S( y5 z, N' t( B8 p k+ P9 W/ @! ^. h
' y! V5 N6 @6 N* F' |' V. e* P* p3 r
: t R8 y6 Y9 S1 @' o" s+ B
+ {% T$ k5 r, n5 \( g* u源码下载地址:点击下载
4 P2 S! U: b: ^2 S- l1 p* y, f3 O3 u! i) n5 _1 @8 @
H& a3 I' Y/ D& J h8 l: ^软件下载地址:点击下载
) n7 s* q$ P1 D3 O2 Z7 Q6 M' H" ^7 {& P& D3 d5 w& x; {, g
; t2 }' l2 _* \5 n5 s7 Q2 ] |
|