TA的每日心情 | 衰 2021-2-2 11:21 |
---|
签到天数: 36 天 [LV.5]常住居民I
|
一:测试平台 win7 64位系统2 u" O6 ?' E9 I, q
二:准备软件 OpenOffice、swftools4 a, Y$ \, [' w5 `; N
OpenOffice 下载地址:http://www.openoffice.org/download/index.html+ ?6 K* j# m. f; i$ C
swftools下载地址:http://www.swftools.org/download.html* O* X# ^) j8 Q
三:测试代码/ J; Y5 P6 c3 \' {
1、conf.properties 软软件路径配置
m! P5 T+ c* M5 Z# ~6 x1 v- OpenOffice_HOME = C:/Program Files (x86)/OpenOffice 4 I/ ^% g" W% Z. `& C: F- L
' {- W8 O* y% `$ [- SWFTools_HOME = D:/SWF/SWFTools
复制代码 第一行 是OpenOffice 的安装路径 安装的时候请记住。' w. H# y/ m3 H
第二行 是swftools的安装路径。
6 {$ l) K: e" R5 I$ Q你可以自定义安装路径最好放到一起、便于管理。0 T" _$ G* Y+ P
2、文档转换
5 @3 I% G# ~1 r- /**+ W( ?* ~/ `1 ^0 o- G! e* D4 S
- * 将odt、doc、docx、ppt或pptx格式的文件转换为pdf文件,如果文件后缀是pdf,则直接返回true。. ^) ]( _* r3 l1 R
- *
1 _5 }. }8 R$ p! @ - * fileSuffix 文件的后缀。
* k3 w; r7 [$ j l* s2 r - */3 S' C: k5 F3 E5 B5 C% _0 E5 N
- private boolean converToPdf(String sourceFilePath, String pdfFileSavePath){& d: U) E# k& E* W0 X
- File sourceFile = new File(sourceFilePath);- ^& b! G. I) l& t2 F
- if (sourceFile.exists()) {
/ d6 w/ ]4 ]* _& D - String OpenOffice_HOME = ConfProperties.getOpenOfficeHome();//OpenOffice的安装根目录
2 h1 ?, N0 m, P- l8 [ - String command = OpenOffice_HOME + "/program/soffice.exe -headless -accept="socket,host=127.0.0.1,port=8100;urp;"";
7 a1 z+ r* M- {# t4 J: M& {1 E - System.out.println("command"+command);
9 W+ o0 t! z) n, ^- k7 Y5 ]0 d - try {
) e0 b* i$ O& n4 k - Process process = Runtime.getRuntime().exec(command);//启动OpenOffice的服务! j& y& F. z* w; n$ ]2 A+ z- N5 }2 e
- OpenOfficeConnection connection = new SocketOpenOfficeConnection("127.0.0.1", 8100);1 m4 S/ [+ Z$ [. V9 P
- connection.connect();
0 m4 g; B5 Z/ ?( m; S - if(connection.isConnected()){//如果连接成功
8 u9 d( G8 o1 [4 M% Z0 c/ ? - DocumentConverter converter = new OpenOfficeDocumentConverter(connection);; Y, k% X- {$ X! }' V1 A( f
- converter.convert(sourceFile, new File(pdfFileSavePath));0 b0 J/ k" S$ b" w- b9 v/ N. C
- connection.disconnect();// close the connection
& w7 y3 S0 ?5 F- v7 N( _ - process.destroy();// 封闭OpenOffice服务的进程& U' g. J% E! G/ S! q5 l
- System.out.println("****pdf转换成功,PDF输出:" + pdfFileSavePath+ "****"); - V# E0 W( m, W* g
- return true;
0 ^( B( }1 N- l, C6 [ - }else{/ @% _$ q& y" d9 y6 B' L; B
- return false;//swf转换器异常,openoffice连接失败!
) L& N* z. q6 r - }
8 `* J' E, Y0 M' V2 _' s - } catch (ConnectException e) {; S# t6 O N( |+ \: Z
- e.printStackTrace();
& J! ^* E' d' T4 K9 [5 U& \ - System.out.println("****swf转换器异常,openoffice服务未启动!****");
7 q9 x. W$ ?2 ?# u: E7 E, W e$ H - return false;8 e l U7 R( o
- } catch (OpenOfficeException e) {# A1 x9 @* x7 N: z) Z
- e.printStackTrace();" A1 h5 y- b' i% c+ V# S. H, a
- System.out.println("****swf转换器异常,读取转换文件失败****");( _2 z! e0 q9 x' j: l9 @) s" w
- return false;. |: w5 N. p! t3 O( e0 `
- } catch (Exception e) {3 s# U, H, ~# Q/ T: p
- e.printStackTrace();
; P0 |! h9 f4 s9 t - return false;0 ?+ \. |. z+ \
- }
9 \7 z8 }) o; A9 S+ p3 h5 V! B& t3 A - } else {# B6 U @" f5 l/ R
- System.out.println("****swf转换器异常,需要转换的文档不存在,无法转换****");
# k* _; n+ J- Z; y5 B0 Z7 a( f - return false;
5 Z; _2 F6 X7 P4 b& V# c" [2 E - }: [7 }! L3 f0 J: M
- }
复制代码 将pdf文件转换为swf文件:
1 i2 ]$ |6 l/ q0 D' h4 {/ P4 ]% T- /**) {" U& I H* d/ o F$ c9 ]: F, G( l
- * 将pdf文件转换为swf文件。& b6 y8 s" q$ v8 Y7 D, }
- *! K' I) `3 p/ a# h7 q
- * @author ghj
1 x7 T- L1 i2 {; x - */. o& Z2 K8 `! x3 ^
- private Map<String, String> converFromPdfToSwf(String pdfFilePath,String swfFileSavePath){
. M" w7 Y9 q: R - String OS = System.getProperty("os.name").toLowerCase();
4 @3 L8 _4 H4 M, M8 D0 j D5 p: k - Map<String, String> returnMap = new HashMap<String, String>();* A! B0 D+ @! \6 K( H
- File pdfFile = new File(pdfFilePath);
1 J+ ^( S$ V) \ - Runtime r = Runtime.getRuntime();
4 A1 U* X) O2 S: j; i* G - if (pdfFile.exists()) {
* F: n6 m B" u1 H - String SWFTools_HOME = ConfProperties.getSWFToolsHome();// SWFTools的安装根目录) g3 [) a! B& j. z+ o
- try {
: v# u3 u1 i5 [5 z- N$ M, O1 P - if (OS.indexOf("windows")>=0) {// windows环境处理
7 B, A8 V% P4 U6 x7 n - Process process = r.exec(SWFTools_HOME+"/pdf2swf.exe "+ pdfFilePath + " -s flashversion=9 -o "+ swfFileSavePath);; C) I# K" t2 X/ D" P
- System.out.print(loadStream(process.getInputStream()));
6 B [2 x4 {0 q9 p8 y. O! G/ k2 n c - System.err.print(loadStream(process.getErrorStream()));1 X6 s/ N* L$ P4 z# P9 D
- System.out.print(loadStream(process.getInputStream()));% F3 R! @1 f) `3 V$ Q
- System.err.println("****swf转换成功,文件输出:"+ swfFileSavePath + "****");* c4 m4 R: w7 z- Z6 ^# j; X% N& k2 o
- process.destroy();// 销毁进程) [6 ]) ]9 b; J; ~7 n, R! F. e7 e
- } else if (OS.indexOf("linux")>=0) {// linux环境处理
6 ^, T- C/ \2 _5 d0 K# y" r3 C - Process process = r.exec(SWFTools_HOME+"/pdf2swf "+ pdfFilePath + " -o " + swfFileSavePath + " -T 9");4 z9 [- {1 V2 h! r( O z" o
- System.out.print(loadStream(process.getInputStream()));2 [# y$ T6 n( @& L' {/ _
- System.err.print(loadStream(process.getErrorStream()));3 z% N8 \2 x8 ?4 x5 t4 ^2 d
- System.err.println("****swf转换成功,文件输出:"+ swfFileSavePath + "****");
% G8 g4 A, C& W# C; t- J, l - process.destroy();// 销毁进程 \# E% Q6 v x, L! m
- }
* u( l2 Y% l7 m# z - if (pdfFile.exists()) {
1 C m& z4 S0 ~; w6 O- D j - pdfFile.delete();//转换成功以后删除上传的pdf文件和转换的pdf文件。
5 m2 Z! B; v& B1 ~. g$ ? C8 V - }1 u2 j% ^0 } R" d3 E7 M1 ?
- returnMap.put("status", "true");
: s* _5 V8 t3 Q) j; {6 i - returnMap.put("swfFileName", swfFileSavePath.substring(swfFileSavePath.lastIndexOf("/")+1));//便于获取转换后swf文件的名字
2 K: Y$ H, t' x/ T' C - } catch (IOException e) {
- z7 v6 a& r H/ Y8 ?. X - e.printStackTrace();* ^5 E. ^% b( ~6 o, G N" T
- returnMap.put("status", "false");4 K4 n) z0 z- \: q
- }- x$ `0 F. j$ o. [
- return returnMap;/ q# V% S7 |" @; M, ^
- } else {: p: \1 s$ v' Y; @6 }6 T& ?- I
- System.out.println("****pdf不存在,无法转换****");
+ U5 Q; Y$ G: u+ L" D& R2 _0 U - returnMap.put("status", "false");
( C0 K$ ]" i3 q& B - return returnMap;0 O9 L4 I" V7 h2 c
- }/ r3 f! f; F8 B" E% L2 O6 _
- }
复制代码
, Z/ R* ~3 o- s1 R7 N9 @& ^4 v四:运行项目测试项目前 请先运行安装好的OpenOffice、swftools6 V6 o( C" `# o- y4 N I. n
测试页面:
: x! H" W% X" i4 U( L
5 G. v) Z* A4 H# c
" o% y" ^% T6 B3 v
1 Y9 G! R& b3 y5 t5 D7 p7 U0 b0 m% u; j
! {- p2 ]. i9 i; {- w' R
) R! F* N3 [8 ]) R; B9 j
% A& j3 F: L7 Y- m( `3 U源码下载地址:点击下载; j* @/ s5 j8 }) u4 q" r- d7 A. B
% j3 ]! e5 ~% M4 s9 V
0 Z z y" @( x6 P- G6 v) Y软件下载地址:点击下载/ n+ p/ Y# @ u( i; j; J# b0 s
5 }. q& \/ S9 A- g+ m# \
/ y8 E0 u' V- f; @# Y+ ] |
|