TA的每日心情 | 衰 2021-2-2 11:21 |
---|
签到天数: 36 天 [LV.5]常住居民I
|
一:测试平台 win7 64位系统' g1 b9 ~+ x5 K9 n7 b
二:准备软件 OpenOffice、swftools
: V: Y* c1 e6 |8 VOpenOffice 下载地址:http://www.openoffice.org/download/index.html
7 I, E7 C$ z9 U6 j( N8 A: D+ U9 iswftools下载地址:http://www.swftools.org/download.html$ r' p7 H, O. L+ K: q4 i. _1 L9 X( [
三:测试代码' I# u; x/ t. _/ y* I
1、conf.properties 软软件路径配置
; r4 S8 o7 }" k& P+ @- OpenOffice_HOME = C:/Program Files (x86)/OpenOffice 47 H* O$ F5 S& ` F5 s0 b9 Q9 t
8 S, R3 D1 c) w! L2 N, V; X- SWFTools_HOME = D:/SWF/SWFTools
复制代码 第一行 是OpenOffice 的安装路径 安装的时候请记住。9 f6 D* x' K: D7 }2 J$ L; f, M, w% d
第二行 是swftools的安装路径。$ O* K8 ^/ t1 F8 i: G* r
你可以自定义安装路径最好放到一起、便于管理。- S5 O0 d! ]9 L p2 S, \" _
2、文档转换: c' d, ^/ t8 L1 c' R! b
- /**7 x9 p1 L( S" _0 o3 V7 w% u6 S1 p
- * 将odt、doc、docx、ppt或pptx格式的文件转换为pdf文件,如果文件后缀是pdf,则直接返回true。7 D; C- \ r, k& W# @# r' m
- *
' W4 D |9 a5 |; R% V5 m% ^; g3 ? - * fileSuffix 文件的后缀。
: b* c, B- r% ~! b# c0 B - */, I% t5 v; `) |. A* G2 G2 D8 E- ?; p
- private boolean converToPdf(String sourceFilePath, String pdfFileSavePath){
. q i( a: ?* w4 ^ - File sourceFile = new File(sourceFilePath);
% @5 u t5 a. i7 u0 j2 u - if (sourceFile.exists()) {" Y+ @/ O% ^ e% [3 B w
- String OpenOffice_HOME = ConfProperties.getOpenOfficeHome();//OpenOffice的安装根目录
8 U! ~$ b: C5 [, F! M - String command = OpenOffice_HOME + "/program/soffice.exe -headless -accept="socket,host=127.0.0.1,port=8100;urp;"";
% E+ M6 |$ _3 {+ u4 R2 R0 N( U - System.out.println("command"+command);
' M/ y) L! x8 v' m - try { \ |1 P$ P. l. O
- Process process = Runtime.getRuntime().exec(command);//启动OpenOffice的服务; J5 H7 a. B+ `# |9 J3 j
- OpenOfficeConnection connection = new SocketOpenOfficeConnection("127.0.0.1", 8100);
1 B' n4 T- p* P3 V9 Y1 S8 }' U4 O - connection.connect();
h& `6 l; E: @3 p - if(connection.isConnected()){//如果连接成功
" A$ }6 ?" C/ }# Q/ Y - DocumentConverter converter = new OpenOfficeDocumentConverter(connection);
2 |* \* m/ j7 p$ _ - converter.convert(sourceFile, new File(pdfFileSavePath));
1 D# \& z l% p b - connection.disconnect();// close the connection
A4 s: }# D6 c - process.destroy();// 封闭OpenOffice服务的进程 }. H( H. t$ I/ C9 i, o8 \
- System.out.println("****pdf转换成功,PDF输出:" + pdfFileSavePath+ "****");
+ M& G3 R. b8 e- n, z/ O8 r - return true;/ \" K& z A# a% K# `$ M: S2 L5 ^0 d( P
- }else{8 _3 D! C2 s* h! C* P" |8 S# u5 @: C
- return false;//swf转换器异常,openoffice连接失败!# v( E8 H9 \& V
- }
, E# _# X, d5 E6 _ - } catch (ConnectException e) {) r& _' X4 Q! d3 Y6 b, L7 Y- D* B8 a
- e.printStackTrace();3 N( k: t4 ^2 q. ~# B3 a8 p
- System.out.println("****swf转换器异常,openoffice服务未启动!****");1 l; h; {4 e1 h6 X* p' i) g) t
- return false;/ N: ?! D( a* c" e
- } catch (OpenOfficeException e) {7 } r" j' ^4 V7 R
- e.printStackTrace();
) V0 I/ z% P3 l% K, p - System.out.println("****swf转换器异常,读取转换文件失败****");) q. r8 b6 O! s7 y# o- f) J
- return false;
. r! ~# w$ p! \, P - } catch (Exception e) { d1 L7 |' h8 X- V, Y& I: D
- e.printStackTrace();3 g3 P" c6 s S* M
- return false;, d/ Z% w/ y7 ?
- }/ o% j3 t/ b- v- l. C% w1 ^: a5 e
- } else {' P# o$ b& E/ J K! Z. k' Y
- System.out.println("****swf转换器异常,需要转换的文档不存在,无法转换****");
' e, N1 ~3 ]9 S' ^' f - return false;
* [6 U' t/ }4 U. A" y' V5 E- s - }# a$ \; D' T; w+ Y; D5 S+ w% s
- }
复制代码 将pdf文件转换为swf文件:: X4 O, p% N9 T. l o4 F
- /**- m7 A# W( s5 @
- * 将pdf文件转换为swf文件。( o7 E( a; r* s! p- a& W
- *. N! Y* z* d v2 J
- * @author ghj
8 L( v* Y4 h% x! D9 o' v - */
/ N) k8 C; {$ E `1 [, \ - private Map<String, String> converFromPdfToSwf(String pdfFilePath,String swfFileSavePath){
/ h/ }# y6 a) X5 i+ t3 z, L - String OS = System.getProperty("os.name").toLowerCase();
+ s6 C. ]' B+ n, l - Map<String, String> returnMap = new HashMap<String, String>();
( P) j, R3 C( S - File pdfFile = new File(pdfFilePath);
' t+ B, v7 ^ A5 J. v - Runtime r = Runtime.getRuntime();7 r% j% i* h, U
- if (pdfFile.exists()) {8 ?, M) M3 D9 D7 B
- String SWFTools_HOME = ConfProperties.getSWFToolsHome();// SWFTools的安装根目录
0 \. v1 O" G1 H7 g0 s - try {
1 E* n) u R$ K @ - if (OS.indexOf("windows")>=0) {// windows环境处理. I( s: }% X6 O' J( F- i2 y4 Y \
- Process process = r.exec(SWFTools_HOME+"/pdf2swf.exe "+ pdfFilePath + " -s flashversion=9 -o "+ swfFileSavePath);
$ ]( t" m5 j1 l* C - System.out.print(loadStream(process.getInputStream()));
. h! i- |$ F5 k - System.err.print(loadStream(process.getErrorStream()));: C+ |! B/ C V" W1 b: d" Z2 k0 H
- System.out.print(loadStream(process.getInputStream()));
/ b% P( g: ~; w - System.err.println("****swf转换成功,文件输出:"+ swfFileSavePath + "****");- k d, e* H T' g' I
- process.destroy();// 销毁进程
2 X/ R; J# b }. l3 @ - } else if (OS.indexOf("linux")>=0) {// linux环境处理0 X* B1 M; t: |' E- u- [+ O
- Process process = r.exec(SWFTools_HOME+"/pdf2swf "+ pdfFilePath + " -o " + swfFileSavePath + " -T 9");
0 E: J: } B- [- g - System.out.print(loadStream(process.getInputStream()));3 U: K( c- Q3 t; Z3 E- A
- System.err.print(loadStream(process.getErrorStream()));. n0 v) E( g! y) P7 }8 R
- System.err.println("****swf转换成功,文件输出:"+ swfFileSavePath + "****");
4 L; D! ?8 W, \% A - process.destroy();// 销毁进程0 p# g3 ]! t- r- r. u7 J" r, b
- }$ ~4 X! W" T- V; z
- if (pdfFile.exists()) {
! Q3 b) U1 c& F9 p) ^+ P/ K - pdfFile.delete();//转换成功以后删除上传的pdf文件和转换的pdf文件。) S% x5 x0 E* z
- }; O: \% y8 I1 u d$ e
- returnMap.put("status", "true");
7 T3 s2 b! u1 @; [! H; A4 W - returnMap.put("swfFileName", swfFileSavePath.substring(swfFileSavePath.lastIndexOf("/")+1));//便于获取转换后swf文件的名字. ]& ?$ {9 \. o7 l/ b
- } catch (IOException e) {. z# s% t) c" ^
- e.printStackTrace();$ \$ E+ N% U8 _, b' _% ~# y% W
- returnMap.put("status", "false");$ F! k, {" n9 t- i/ F! C+ p g" M& Y a
- }
& Z7 i. e/ ?! M. H8 d - return returnMap;& z; S8 |/ |" i/ u0 B
- } else {; W8 x6 s7 l9 {0 J( a
- System.out.println("****pdf不存在,无法转换****");$ D9 M1 v: E6 X' X9 A. d+ ^9 U
- returnMap.put("status", "false");8 c) Y* x: X/ k' T g+ T. l* C
- return returnMap;
- n V9 Q% n$ b+ C$ b; H/ N - }
4 m9 w1 |1 q; O" J4 f- w' x - }
复制代码
, A8 X) [0 W2 r) c; b; Z) z/ a4 r四:运行项目测试项目前 请先运行安装好的OpenOffice、swftools* p5 |- A, m( V1 D k9 G3 A
测试页面:) `$ S) R% z, v
5 P" ^1 b9 a% o0 v2 u; v
. K5 S& {4 _* e2 }5 i" X4 V! Z& F. e( O$ O) m! H' h% K5 v! H3 ]
; c; |2 z o6 o" j
! g8 N3 M2 ], k$ v4 ^ C
6 D( b( M1 q( n
8 C8 f% ?1 `6 R9 p9 m
源码下载地址:点击下载; K2 y$ f$ w6 b
1 A2 p9 P1 I7 \. f4 A4 [
* b/ d- t% @, H软件下载地址:点击下载" t6 Y0 ?4 s' }0 T* [
. U3 h' V- \5 S+ j" O
% S, z2 G C& a! F+ q& l. Q6 Y |
|