TA的每日心情 | 衰 2021-2-2 11:21 |
---|
签到天数: 36 天 [LV.5]常住居民I
|
一:测试平台 win7 64位系统- U$ Q* P$ V8 [, V
二:准备软件 OpenOffice、swftools
3 N( F$ n: \' @8 A7 IOpenOffice 下载地址:http://www.openoffice.org/download/index.html7 ?% d. I8 h8 p
swftools下载地址:http://www.swftools.org/download.html. R- R6 S6 b( _. d8 P9 B
三:测试代码
9 Y5 x4 t: ~& z6 L( _! t1、conf.properties 软软件路径配置2 @8 M! J2 p; ?1 s( Y; f8 ^
- OpenOffice_HOME = C:/Program Files (x86)/OpenOffice 4
! E: A6 s0 ~9 O# o3 X. V - % m* H6 T* q- a: y3 `9 C
- SWFTools_HOME = D:/SWF/SWFTools
复制代码 第一行 是OpenOffice 的安装路径 安装的时候请记住。
8 d; `+ b. P6 }" t F第二行 是swftools的安装路径。: B# ^7 W) O* S* A# [
你可以自定义安装路径最好放到一起、便于管理。
+ h0 T0 x! ?: j5 N) e; F( e4 ^2 F$ i, h2、文档转换
3 ?' G" j6 P0 d! H- /**
1 L% r& D. H S1 N2 h - * 将odt、doc、docx、ppt或pptx格式的文件转换为pdf文件,如果文件后缀是pdf,则直接返回true。
( k c- x& o; n8 ] - * ; j( \# J- @' S: z, @! x; q
- * fileSuffix 文件的后缀。
. _; N8 d0 i9 O$ L B - */
8 ~1 k: X0 Z9 }5 F - private boolean converToPdf(String sourceFilePath, String pdfFileSavePath){
8 F1 v& O/ v, y& M- h' ^! c - File sourceFile = new File(sourceFilePath);
0 H) Q! w& q1 X2 T; h - if (sourceFile.exists()) { C8 ?5 l) x! F) {: W
- String OpenOffice_HOME = ConfProperties.getOpenOfficeHome();//OpenOffice的安装根目录% x, c5 G& e" i E. p8 n) d* {& c
- String command = OpenOffice_HOME + "/program/soffice.exe -headless -accept="socket,host=127.0.0.1,port=8100;urp;"";
3 \/ C- s7 m# W - System.out.println("command"+command);. w: o# q3 D% o" v
- try {
$ ]+ }+ l% j6 J, s - Process process = Runtime.getRuntime().exec(command);//启动OpenOffice的服务
) q0 U& \, ]( o; m - OpenOfficeConnection connection = new SocketOpenOfficeConnection("127.0.0.1", 8100);: F2 \ y }% D7 f0 A) e% X
- connection.connect();" Y) Y6 q! Q8 c3 ?
- if(connection.isConnected()){//如果连接成功
0 ?1 b( Q$ _9 L! W; |% {& A; m( @6 K - DocumentConverter converter = new OpenOfficeDocumentConverter(connection);$ o6 ~( V% t8 c, f1 S
- converter.convert(sourceFile, new File(pdfFileSavePath));, R2 x- B5 X- }4 `
- connection.disconnect();// close the connection
: C! I0 h$ `; S - process.destroy();// 封闭OpenOffice服务的进程
2 D, p3 I) A! ]4 K) g - System.out.println("****pdf转换成功,PDF输出:" + pdfFileSavePath+ "****");
e" C4 ~" Q& R- B1 c! b - return true;
6 V x4 g6 p n7 Z8 t# m7 k- {4 p, m - }else{. I/ ?+ T2 x; o0 A. F( ^+ z
- return false;//swf转换器异常,openoffice连接失败!
2 o" a+ V3 p. {1 I5 ]; g - }6 C9 I6 c8 W& y, }, o
- } catch (ConnectException e) {+ f. X+ `6 Y; u$ a5 D* E, M- t
- e.printStackTrace();- @8 k" g2 U* ^ W) \* |: e
- System.out.println("****swf转换器异常,openoffice服务未启动!****");
1 p j7 V" S/ S7 t+ Y0 I. ?+ n - return false;
& l$ e' s- d+ @, } c. p - } catch (OpenOfficeException e) {
. e" w5 \, u' v% m J7 } - e.printStackTrace();- A/ \, j8 u% E, s- ]! i8 ]
- System.out.println("****swf转换器异常,读取转换文件失败****");; Z0 D) O% }' Y3 Z! T
- return false;* t, G5 j1 W2 L" g5 n, h4 z/ }
- } catch (Exception e) {
( B6 q5 @( d3 ^7 P* [. B - e.printStackTrace();
( W. w9 t* f; p! _0 A- v7 ? - return false;: x# G5 O: v/ _' g. F: ~
- }4 V% @2 m/ h+ O5 \. q& e
- } else {5 l8 s0 j0 t$ J2 F
- System.out.println("****swf转换器异常,需要转换的文档不存在,无法转换****");( J, x1 G* u3 J
- return false; D3 V% A' s3 S# P4 ]
- }8 E: Y1 J& A; H# b5 H( ]
- }
复制代码 将pdf文件转换为swf文件:2 S5 ]5 A+ {# V
- /**
3 T9 g1 h8 L1 ?1 c0 Y - * 将pdf文件转换为swf文件。: R! o4 v+ y6 A( y' e# p/ P% T
- *
# A- h) V0 @$ W- c' c - * @author ghj
2 s F. H% B4 o1 S - */
; P- H* K7 M% v( d- w: x0 g; o - private Map<String, String> converFromPdfToSwf(String pdfFilePath,String swfFileSavePath){6 K! A d1 _" d' r) R& q
- String OS = System.getProperty("os.name").toLowerCase();
* b, l4 i3 ~9 ` - Map<String, String> returnMap = new HashMap<String, String>();( @5 I2 K+ g" Z+ e
- File pdfFile = new File(pdfFilePath);
/ v$ {( H" z+ M8 s5 }$ \( r4 g - Runtime r = Runtime.getRuntime();2 f5 T. P. t2 c% V9 P
- if (pdfFile.exists()) {, f3 B- s( W" P) ] M4 A
- String SWFTools_HOME = ConfProperties.getSWFToolsHome();// SWFTools的安装根目录
" @9 G W! ~! N" R* h - try {: a4 E3 J; r* `) H8 q+ T5 [6 x
- if (OS.indexOf("windows")>=0) {// windows环境处理1 Z" n# r& J m
- Process process = r.exec(SWFTools_HOME+"/pdf2swf.exe "+ pdfFilePath + " -s flashversion=9 -o "+ swfFileSavePath);
& W% K1 w& r* g f' g: D - System.out.print(loadStream(process.getInputStream()));
5 O; J G n! B: ] - System.err.print(loadStream(process.getErrorStream()));
7 u1 V! I% P; k ]8 o3 e7 F; \ - System.out.print(loadStream(process.getInputStream()));
" g( {; d& r3 |, [& j - System.err.println("****swf转换成功,文件输出:"+ swfFileSavePath + "****");/ @ w) P3 [' a5 A0 D
- process.destroy();// 销毁进程
/ i3 w3 U5 H, R$ W - } else if (OS.indexOf("linux")>=0) {// linux环境处理
5 Z; j+ G* Y. M8 h# ^ - Process process = r.exec(SWFTools_HOME+"/pdf2swf "+ pdfFilePath + " -o " + swfFileSavePath + " -T 9");
1 o: z1 Y, y0 W1 c4 _1 j' R - System.out.print(loadStream(process.getInputStream()));! Q1 ?! o2 C: q( h3 C, _
- System.err.print(loadStream(process.getErrorStream()));3 E: H+ ?/ p5 ^' ]
- System.err.println("****swf转换成功,文件输出:"+ swfFileSavePath + "****");
. `% l, a, G0 b' t% M. @: s - process.destroy();// 销毁进程
) Q; p# B2 b4 D9 P2 q) H - }. R8 f. A1 G# L+ b' J/ w
- if (pdfFile.exists()) {" z- e* o% w* q9 z8 O' z9 j
- pdfFile.delete();//转换成功以后删除上传的pdf文件和转换的pdf文件。* X/ U E3 w% d, _$ L& n" R v
- }/ f# u; U5 Q* H1 \6 X! Q4 C! Y
- returnMap.put("status", "true");, @! Z% r: ~% k2 K
- returnMap.put("swfFileName", swfFileSavePath.substring(swfFileSavePath.lastIndexOf("/")+1));//便于获取转换后swf文件的名字
' b( q0 ]8 y! C: i - } catch (IOException e) {
- K" F2 q5 h- @ - e.printStackTrace();0 s2 }/ k! l6 f" s; O8 T$ ~& }6 B
- returnMap.put("status", "false");' H: A) |3 J1 E4 [
- }3 S6 y( E5 s l5 U( G" w4 J; Q' Z
- return returnMap;
+ i- y/ u( D1 ^% h; @$ ] - } else {) D- a; E% p9 ^2 k# q9 f
- System.out.println("****pdf不存在,无法转换****");
6 R) x% B) M% v - returnMap.put("status", "false");
* ]+ `, h& T' V- `0 H* c" j - return returnMap;
8 p* g3 _0 r; w: b- b& L6 | - }
; ~; F2 _( A; [) P; A! T - }
复制代码
" T8 ]2 H0 y& ?& X8 F四:运行项目测试项目前 请先运行安装好的OpenOffice、swftools& R; r0 P- g7 i' k; F) p# B
测试页面:
; @) {3 g2 U8 [( i" F8 i
8 D) N# L& ?" Y4 O8 @2 P2 c/ N& k# F7 H! Y
- u2 y8 F( R, Q% L; n/ I
* f% y1 s: Q5 d; J+ _
& H' Q+ S. T8 k% h9 h) I
9 J. M# p" C% X8 ^" G& A
R! V, u, m5 G g( p/ B0 z/ w3 R源码下载地址:点击下载
* c9 b8 X/ `% h$ `5 m5 X# _8 K
# L: ]$ x) a" g
# K! T! a8 f9 ?0 j5 b, ]: h* H软件下载地址:点击下载4 J4 [: |3 r$ M4 S: u" N6 m8 Q0 [0 Y
+ p" c" o. B) k, U8 `) m$ Q
& ?# ?. n6 N% b+ B) i! d4 u0 c2 e, q |
|