TA的每日心情 | 衰 2021-2-2 11:21 |
---|
签到天数: 36 天 [LV.5]常住居民I
|
一:测试平台 win7 64位系统$ `: C; u6 b' p9 ]" [/ H P" e
二:准备软件 OpenOffice、swftools. x6 R& ?/ w3 r$ ~1 u. }
OpenOffice 下载地址:http://www.openoffice.org/download/index.html
0 r t( V1 \) Mswftools下载地址:http://www.swftools.org/download.html
; Q3 d0 i+ z) G8 b3 r2 D! s三:测试代码
0 \; x r) z+ `' O3 U- [7 ~1、conf.properties 软软件路径配置
% C3 f4 R# n# g# j7 X1 P2 k T, K5 Q, Z+ s- OpenOffice_HOME = C:/Program Files (x86)/OpenOffice 4
6 r$ b' I) M, \7 G6 ?: | a. I - ) j }' q6 \/ S1 ?2 x# b
- SWFTools_HOME = D:/SWF/SWFTools
复制代码 第一行 是OpenOffice 的安装路径 安装的时候请记住。
. {) h- p5 D" u# E5 \) |第二行 是swftools的安装路径。
% c9 S8 G0 j0 u" g& N你可以自定义安装路径最好放到一起、便于管理。7 @1 k8 x T: ~. B; y
2、文档转换7 {8 S/ b( d6 d2 F0 n
- /**
v" w' k6 K/ {. T1 U' i - * 将odt、doc、docx、ppt或pptx格式的文件转换为pdf文件,如果文件后缀是pdf,则直接返回true。3 p7 x N7 U& d9 y" \
- *
1 f9 z6 s2 m# b! ?# j! w - * fileSuffix 文件的后缀。/ h% w6 s* ]2 m+ D8 B
- */
+ I' H: i; _6 q& s - private boolean converToPdf(String sourceFilePath, String pdfFileSavePath){8 |$ E& a$ V0 I1 z+ K
- File sourceFile = new File(sourceFilePath);( ]% @# ` L [( m4 U
- if (sourceFile.exists()) {
1 L; Q- m" `. c - String OpenOffice_HOME = ConfProperties.getOpenOfficeHome();//OpenOffice的安装根目录, s* \: ~: h$ d
- String command = OpenOffice_HOME + "/program/soffice.exe -headless -accept="socket,host=127.0.0.1,port=8100;urp;"";1 M$ P8 L y; J6 X5 q
- System.out.println("command"+command);3 p7 g5 s- r0 s' D3 w; s4 ^
- try {
$ ?# i: K& z" Q$ G4 V - Process process = Runtime.getRuntime().exec(command);//启动OpenOffice的服务
. C2 c! U8 J6 H5 Z6 h0 p; x: t - OpenOfficeConnection connection = new SocketOpenOfficeConnection("127.0.0.1", 8100);
; p0 U }+ f% f1 M( H - connection.connect();) e. x1 e' L& J- T& h
- if(connection.isConnected()){//如果连接成功
; z+ K- C( Z/ H( N! M - DocumentConverter converter = new OpenOfficeDocumentConverter(connection);
! k' ^. y0 C/ U+ t - converter.convert(sourceFile, new File(pdfFileSavePath));
* J) E3 J7 U* u; J - connection.disconnect();// close the connection
$ M' O4 M% h3 k. E G7 O$ {+ Z# o - process.destroy();// 封闭OpenOffice服务的进程
: n: \$ R! [% D y, O8 \ - System.out.println("****pdf转换成功,PDF输出:" + pdfFileSavePath+ "****"); 6 I; l+ a0 Z \& d6 ?
- return true;) g" X$ ~3 w; Y0 B" }) _
- }else{; v( |, Y z; t& J* s
- return false;//swf转换器异常,openoffice连接失败!7 w, w% Z9 i& C2 X
- } V8 L0 |) j0 }# |7 j2 O) N$ K; n
- } catch (ConnectException e) {. d x+ S/ Z0 s
- e.printStackTrace();' Z* W0 A4 n$ {( \# K/ r" x
- System.out.println("****swf转换器异常,openoffice服务未启动!****");4 C/ Y4 ?2 h; |3 n
- return false;: p/ W9 Q2 E6 z1 m2 ]
- } catch (OpenOfficeException e) {
& o8 a. U+ @! ~7 s \' M - e.printStackTrace();. N; b/ L; ^' g6 t1 M! ~$ ~3 A& L; L1 Z3 J
- System.out.println("****swf转换器异常,读取转换文件失败****");
, D) D' p, t2 Z3 w* F7 P$ } - return false;
4 [# P* o9 I! d( j6 w3 b - } catch (Exception e) {1 m2 C) W* X" D0 k( s3 i
- e.printStackTrace();
9 c% B, l) G( t) F* g% `' | - return false;
: W9 N: I7 A `7 N - }5 Q: r6 D" k1 Z" w% H; L
- } else {
: E" Q- V" B7 R - System.out.println("****swf转换器异常,需要转换的文档不存在,无法转换****");
7 Z) a* I8 _" T! U8 k - return false;
9 j, M7 s+ q+ f+ z - } h" G ^, ^* p( j y) Q
- }
复制代码 将pdf文件转换为swf文件:% I" {6 F4 {' e! }. U2 b, q0 i
- /**- q: x: Q4 F4 O H9 D
- * 将pdf文件转换为swf文件。 `; e2 \+ q* b; N+ O6 Z
- *- M2 k& N3 ^& f% f2 }
- * @author ghj
( I/ d, g5 {2 B1 t: j% P - */
' |/ R+ B& i) I9 [ - private Map<String, String> converFromPdfToSwf(String pdfFilePath,String swfFileSavePath){
) K1 u; R% S) e( \- I* C# H) ]* i - String OS = System.getProperty("os.name").toLowerCase();
* z7 k) o, u6 r; f5 r - Map<String, String> returnMap = new HashMap<String, String>();" o' z# D) s8 B
- File pdfFile = new File(pdfFilePath);' I# R4 r) V* g4 l
- Runtime r = Runtime.getRuntime();
. Y: x, @: `* c$ ]2 Q7 O" E9 A6 N; G - if (pdfFile.exists()) {; x; w' @2 ^& e) Z+ c W# f
- String SWFTools_HOME = ConfProperties.getSWFToolsHome();// SWFTools的安装根目录0 H. j' C8 E* t% }
- try {
. t2 N) ]7 D7 h$ C: b - if (OS.indexOf("windows")>=0) {// windows环境处理
7 N8 r5 K$ Z' I* U% d8 ~+ L% t - Process process = r.exec(SWFTools_HOME+"/pdf2swf.exe "+ pdfFilePath + " -s flashversion=9 -o "+ swfFileSavePath);
/ W* c6 f* W: i9 L0 ]- E - System.out.print(loadStream(process.getInputStream()));. W @ O: W$ w" N. {! K' M
- System.err.print(loadStream(process.getErrorStream()));1 u* l: a) v# v2 p
- System.out.print(loadStream(process.getInputStream()));+ g) _8 P0 ]; C
- System.err.println("****swf转换成功,文件输出:"+ swfFileSavePath + "****");) Z! g& d3 x. v( H) a- b# `
- process.destroy();// 销毁进程' @; U3 z# O; Z- o
- } else if (OS.indexOf("linux")>=0) {// linux环境处理
+ q+ L2 R3 `; M0 L7 y6 j - Process process = r.exec(SWFTools_HOME+"/pdf2swf "+ pdfFilePath + " -o " + swfFileSavePath + " -T 9");1 _* Z" X$ o/ u
- System.out.print(loadStream(process.getInputStream()));3 c% J& _7 R# Q
- System.err.print(loadStream(process.getErrorStream()));
, M- X1 W t1 j/ o - System.err.println("****swf转换成功,文件输出:"+ swfFileSavePath + "****");6 k* e- z0 ^6 {: M5 h
- process.destroy();// 销毁进程' u0 b, T! v- k( c; g' g9 ^
- }9 t7 e2 R& y @. q) d9 n& p
- if (pdfFile.exists()) {
0 k2 R) a5 \. g6 Y! q7 b, O* [ - pdfFile.delete();//转换成功以后删除上传的pdf文件和转换的pdf文件。; l* \/ x' _4 o2 z
- }2 j. S$ t# _- b& H7 Z$ Y: I5 N
- returnMap.put("status", "true");
0 ^$ D' Q c, ]& ? - returnMap.put("swfFileName", swfFileSavePath.substring(swfFileSavePath.lastIndexOf("/")+1));//便于获取转换后swf文件的名字# r& e' Z( e' W& O# h
- } catch (IOException e) {: d* t6 V. b7 m; A1 i# Z# u
- e.printStackTrace();% R3 R: w" I' ]( X# L0 Z
- returnMap.put("status", "false");" u# ?. @ b& H8 [' ?) K
- }) p* y* C9 I9 R+ v/ k% h2 T. C6 w. m; J
- return returnMap;& c( v R' b8 g' y
- } else {
& V e+ g. I5 S9 [0 ^ - System.out.println("****pdf不存在,无法转换****");
" @! m! ?' n% c$ n& c. Q8 J - returnMap.put("status", "false");- H& \3 e0 I1 D4 F0 n. ^8 O6 k# |
- return returnMap;, }# h, }0 m& _% o a
- }
- F2 r* U9 T! p% B% J7 F0 z7 X - }
复制代码 6 o& w# R* a! h! H0 w0 j" `8 m
四:运行项目测试项目前 请先运行安装好的OpenOffice、swftools
0 C1 I6 d9 p+ c1 t测试页面:' Q2 ~) r" w. P5 d& a, U
9 F; U( h4 D* v4 m' f
5 \+ t% j# {2 x' O0 E+ G% R) ]( d% j' P
( r, b/ n' K8 i7 W) V0 |9 I" G* k0 w0 o
! h4 ^, T) l) d" C7 R- ^ y. r' L! P& e! \8 T& f/ G
6 y$ r* W: P) T' e: X6 I N源码下载地址:点击下载
, i8 I; \* H$ Q8 l; C3 Q3 Y5 R; b# \' m% A3 j. P O
6 u5 o5 f* r) k* V软件下载地址:点击下载
; }- p# Z6 [* P. q! q+ ~+ a& W
* g) C5 P, R3 V+ e) Q3 c
& _* U1 O5 W+ z1 W+ a8 ~" c |
|