TA的每日心情 | 衰 2021-2-2 11:21 |
---|
签到天数: 36 天 [LV.5]常住居民I
|
一:测试平台 win7 64位系统
+ z( X1 E) N; Q) v2 L二:准备软件 OpenOffice、swftools( o8 v% D, k. k+ ~, P: U( Z
OpenOffice 下载地址:http://www.openoffice.org/download/index.html1 y' f0 C4 b' v+ `! `+ q; m0 g
swftools下载地址:http://www.swftools.org/download.html
. c6 v: b. |3 _: e2 a6 K三:测试代码
; Z& U3 S" d0 T! Q$ N1、conf.properties 软软件路径配置) G# R5 P: d4 F) t. _
- OpenOffice_HOME = C:/Program Files (x86)/OpenOffice 4, m9 j; n G. |) v& `- X
( d" F* i% X; j6 d- SWFTools_HOME = D:/SWF/SWFTools
复制代码 第一行 是OpenOffice 的安装路径 安装的时候请记住。
" m1 L; Y- l R第二行 是swftools的安装路径。, }9 S9 l& W5 I9 x0 u1 I- b i6 w% A
你可以自定义安装路径最好放到一起、便于管理。
# v) Y+ i2 m/ I5 p8 t. X2、文档转换2 u) X; M( K: q9 {- K' J1 L
- /**
! M Y$ O4 v. U; M4 r- r5 w: f - * 将odt、doc、docx、ppt或pptx格式的文件转换为pdf文件,如果文件后缀是pdf,则直接返回true。
W# A$ r$ W2 U" }, _( i - * ; t9 n b$ t7 T! ~
- * fileSuffix 文件的后缀。# ?; t9 g! r" L+ @: @, I% c
- */9 H# O. H! k* ^4 \1 d) W5 y( }+ m
- private boolean converToPdf(String sourceFilePath, String pdfFileSavePath){
' g& D! U# P- e - File sourceFile = new File(sourceFilePath);. R+ J+ [( @* K8 z0 O) ]
- if (sourceFile.exists()) {
/ `6 D# h) t2 |' L. V0 k1 ] - String OpenOffice_HOME = ConfProperties.getOpenOfficeHome();//OpenOffice的安装根目录* N1 X! K% T' s. [. s
- String command = OpenOffice_HOME + "/program/soffice.exe -headless -accept="socket,host=127.0.0.1,port=8100;urp;"";
) d' o- i; D9 c* |8 D - System.out.println("command"+command);
q _: u" V H9 V6 w - try {7 \: f) \4 C1 t' ]1 W
- Process process = Runtime.getRuntime().exec(command);//启动OpenOffice的服务
! J/ G9 c; a/ p - OpenOfficeConnection connection = new SocketOpenOfficeConnection("127.0.0.1", 8100);8 H3 V6 u3 m8 Z3 p2 ]
- connection.connect();! W0 U# x& p& y4 L
- if(connection.isConnected()){//如果连接成功
2 y+ a+ o% k8 Y& Z: J - DocumentConverter converter = new OpenOfficeDocumentConverter(connection);
0 @9 S5 o# U0 @( ? - converter.convert(sourceFile, new File(pdfFileSavePath));
- ]/ r6 O. `. I: K$ d# m - connection.disconnect();// close the connection6 y; P8 l6 J1 f7 v% r6 B1 c5 D6 s6 \- w
- process.destroy();// 封闭OpenOffice服务的进程, q, L) [" S v, u* c
- System.out.println("****pdf转换成功,PDF输出:" + pdfFileSavePath+ "****");
" P! p* }' o' G; {4 s" }7 @ - return true;
/ @9 N* u3 T4 Y5 x% V - }else{
2 Z- E$ ?, w/ Q) q - return false;//swf转换器异常,openoffice连接失败!
, D7 S A& F$ m) k( E - }
; G, f1 h) Z( |3 ~7 w - } catch (ConnectException e) {
' e* B- a2 A6 A - e.printStackTrace();9 j _' b7 o$ v! |: [# [$ ~5 z' a
- System.out.println("****swf转换器异常,openoffice服务未启动!****");
- D- W! }8 i, d) _8 C* Q# q - return false;* ^6 X8 J7 u+ }3 W
- } catch (OpenOfficeException e) {
% i" U& X8 m, G0 g8 y3 G - e.printStackTrace();0 A( U; {/ Z* {3 L' T' L7 B; O
- System.out.println("****swf转换器异常,读取转换文件失败****");
* G6 W& N) g ]; I' j0 H2 u' P - return false;4 n$ U8 C! W0 t6 ?: q! ~
- } catch (Exception e) {& h/ l3 Q. W5 `% Z2 B) j# g
- e.printStackTrace();. ?6 k4 w- q+ b
- return false;/ G, _7 f& s* L8 L6 N# W" g, l4 E
- }) c) J* O4 r: H0 e( [; {1 l3 j3 R, O
- } else {. M$ H8 e3 d, N4 T
- System.out.println("****swf转换器异常,需要转换的文档不存在,无法转换****");' c8 w: x( G4 d. |
- return false;5 v" x) a+ p# c: }- t5 b
- }
' V q. ?8 U2 K* {: b6 ~: A. O - }
复制代码 将pdf文件转换为swf文件:, T/ q) }" l0 e' c; g7 x" E
- /**' \; b1 i' M/ V5 ~2 J# r0 a
- * 将pdf文件转换为swf文件。5 N' ~! G: x& y! m8 H% a4 F
- *
; H2 F2 G- {# `; K! g2 G" b - * @author ghj) ^# e, D) d; k
- */
( }0 i5 O1 H+ K T9 _6 o - private Map<String, String> converFromPdfToSwf(String pdfFilePath,String swfFileSavePath){( e9 P3 ]% o. o: L; O- `" Y6 U
- String OS = System.getProperty("os.name").toLowerCase(); 6 l8 ~; h' I3 }# X/ q
- Map<String, String> returnMap = new HashMap<String, String>();) x3 I4 l2 h2 P, V6 ~" Q
- File pdfFile = new File(pdfFilePath);
! x. c7 v; l3 q! N" i: d0 E - Runtime r = Runtime.getRuntime();
/ I/ _3 H: f, ~ - if (pdfFile.exists()) {
/ c. I- \4 y4 Z - String SWFTools_HOME = ConfProperties.getSWFToolsHome();// SWFTools的安装根目录! | D3 q; p9 P+ E' P8 L
- try {. V+ y& b$ s; Y' y* M7 Q& K
- if (OS.indexOf("windows")>=0) {// windows环境处理6 t, Q0 N3 [' v* `; ^
- Process process = r.exec(SWFTools_HOME+"/pdf2swf.exe "+ pdfFilePath + " -s flashversion=9 -o "+ swfFileSavePath);2 w$ a( H# i9 b6 z& s& v; _
- System.out.print(loadStream(process.getInputStream()));) U! a" ?8 o9 E g( d$ s6 d
- System.err.print(loadStream(process.getErrorStream()));
0 S9 }; |# t" J4 L2 ?+ ]+ ~' C5 J - System.out.print(loadStream(process.getInputStream()));
3 x$ X( M7 I/ F% e/ z, l$ |% O y" ] - System.err.println("****swf转换成功,文件输出:"+ swfFileSavePath + "****");
3 H* X8 s& A; h6 N - process.destroy();// 销毁进程: t2 o. w8 }; z5 p2 n
- } else if (OS.indexOf("linux")>=0) {// linux环境处理
' n. V$ ^, A8 C) Z5 Q G6 ^ - Process process = r.exec(SWFTools_HOME+"/pdf2swf "+ pdfFilePath + " -o " + swfFileSavePath + " -T 9");$ U3 h2 K q& {
- System.out.print(loadStream(process.getInputStream()));9 y* ?" P' C/ w+ ?
- System.err.print(loadStream(process.getErrorStream()));. j. I9 I+ l9 `# G' t, ]
- System.err.println("****swf转换成功,文件输出:"+ swfFileSavePath + "****");
7 N* c- B+ B( \- S0 d! c - process.destroy();// 销毁进程
! @& t4 v8 b8 K8 w( g - }+ P4 B4 @0 T+ _! S2 N( {* D" w* f
- if (pdfFile.exists()) {4 _2 m4 x3 B9 {* R P
- pdfFile.delete();//转换成功以后删除上传的pdf文件和转换的pdf文件。! p3 g4 S* Q" X+ y$ P6 w
- }
- n8 ~0 \7 v: p - returnMap.put("status", "true");% ?( D0 _( x9 O
- returnMap.put("swfFileName", swfFileSavePath.substring(swfFileSavePath.lastIndexOf("/")+1));//便于获取转换后swf文件的名字
) {9 M6 w2 ?/ E" _ - } catch (IOException e) { V" ~1 H6 \: ?
- e.printStackTrace();0 x! a$ G0 U! Z3 D8 _. w- b' [8 C5 t
- returnMap.put("status", "false");& `7 s0 K' X( ?' u y/ S4 x: s* n2 g
- }
$ `7 c4 s( h- Q8 u5 M - return returnMap;: u6 E# ~* q* L9 J% c# f3 h
- } else {
5 p$ c2 m1 r, R4 d3 G - System.out.println("****pdf不存在,无法转换****");" \& Q' R* r+ p. p8 G; E: R: B
- returnMap.put("status", "false");+ P1 P0 K3 x! x( z" N, Y
- return returnMap;( h, [) ?% l4 ~% c2 a
- }6 {& {6 B8 l# t1 H2 g
- }
复制代码 9 Y+ t7 X0 z& Q2 @& S4 \$ x% U
四:运行项目测试项目前 请先运行安装好的OpenOffice、swftools
# R; w4 e+ J, D+ {测试页面:6 a7 w; E5 A. O- G5 h* D
! i. \3 N9 k3 B, I* F0 j; Q2 T2 ]
( e) r; W7 r3 r r0 I. T9 v9 ]% ^: O
- H9 x" }8 c- e+ Y& |
6 C. F% _6 k* {$ v k
" I Y) I! `, ~% r5 Q2 w2 c& V
- {; @7 ~( [. n5 H- j% ~( g6 o4 w3 p# X源码下载地址:点击下载: I1 [" Q4 W; M6 M$ Q9 h
0 J2 a' B8 y; ?/ ^
. [2 g! Q' @1 q& e
软件下载地址:点击下载$ h9 q$ m1 {& ~4 t$ a# ^, D& o2 M/ S
6 L( S2 g: m `
6 ]9 x$ ] h1 y9 U& | |
|