TA的每日心情 | 衰 2021-2-2 11:21 |
|---|
签到天数: 36 天 [LV.5]常住居民I
|
一:测试平台 win7 64位系统
, P) ~- I0 Q) k' `+ ^3 q$ |二:准备软件 OpenOffice、swftools
+ g6 z4 \' [( X( xOpenOffice 下载地址:http://www.openoffice.org/download/index.html
& Q( Q8 I, S0 B) ^7 p$ [: |9 nswftools下载地址:http://www.swftools.org/download.html
! A+ T8 k% e5 s' `5 Q+ p三:测试代码
9 R6 L7 D5 E( q6 U# H( ^0 I1、conf.properties 软软件路径配置
0 O$ s6 y% M4 b8 ?; v- OpenOffice_HOME = C:/Program Files (x86)/OpenOffice 43 @$ ?* e) C: z/ Q0 h7 F- m
- 1 b* R* ?! U6 a9 b6 u$ {2 d: Z, E
- SWFTools_HOME = D:/SWF/SWFTools
复制代码 第一行 是OpenOffice 的安装路径 安装的时候请记住。
! y+ C7 r" j9 g* \6 V第二行 是swftools的安装路径。/ C" h! g- h! L/ F% A# C' P
你可以自定义安装路径最好放到一起、便于管理。0 d: \9 U% Y3 E0 g5 K
2、文档转换
3 L! P9 t5 O" ?7 e: ?" M1 s- /**
# Y ~+ }4 j- I0 Q" j - * 将odt、doc、docx、ppt或pptx格式的文件转换为pdf文件,如果文件后缀是pdf,则直接返回true。
2 P* k8 n- {# ]7 v: S5 S* M! {/ Y# e: i - * 3 g& [0 w) S- g
- * fileSuffix 文件的后缀。5 e* m; B5 V# Z, p1 h( f3 z& y* C7 X
- */1 M+ K1 _ n! J* Y" K+ d l0 A
- private boolean converToPdf(String sourceFilePath, String pdfFileSavePath){. y7 R& W( @3 t1 |
- File sourceFile = new File(sourceFilePath);* x, C6 K; J+ s' N
- if (sourceFile.exists()) {( u$ ?1 H `+ k+ I/ x
- String OpenOffice_HOME = ConfProperties.getOpenOfficeHome();//OpenOffice的安装根目录
+ }, `3 k) {+ C! v! j - String command = OpenOffice_HOME + "/program/soffice.exe -headless -accept="socket,host=127.0.0.1,port=8100;urp;"";
8 V9 q8 W; j0 F2 x& @ - System.out.println("command"+command);
0 Z( k# n' q. L3 w - try {
, w3 o# y: a$ w- n% X8 q - Process process = Runtime.getRuntime().exec(command);//启动OpenOffice的服务5 j8 p# q8 M( f" w' [* c
- OpenOfficeConnection connection = new SocketOpenOfficeConnection("127.0.0.1", 8100);) }2 U; M4 c3 Y
- connection.connect();5 _. [: i' ]' i3 P
- if(connection.isConnected()){//如果连接成功
- C& l5 r& Q, @ - DocumentConverter converter = new OpenOfficeDocumentConverter(connection);* U" }- b! E: f- l* g$ Q4 Z
- converter.convert(sourceFile, new File(pdfFileSavePath));
6 e1 X, n4 X/ K* p& g* M* F2 V - connection.disconnect();// close the connection* I! ~! g9 W8 z. U& o
- process.destroy();// 封闭OpenOffice服务的进程
$ Q; ?8 U, X4 s - System.out.println("****pdf转换成功,PDF输出:" + pdfFileSavePath+ "****"); 2 ~3 W7 _. P$ [& |; C5 @5 i
- return true;; C5 R5 f' y# v% W% e, W3 T
- }else{
7 r# L% m' b# Z2 J, i3 b - return false;//swf转换器异常,openoffice连接失败!9 W" ?3 ]# u& a+ M
- }
- H# q6 L. Q) }& J$ Z4 }8 ? - } catch (ConnectException e) {
- i( A* P0 y6 Q% V - e.printStackTrace();
9 A) t6 [; g( ]9 ] - System.out.println("****swf转换器异常,openoffice服务未启动!****");! b& Q) x) q8 R$ Y
- return false;0 X0 y7 N' g* b [0 ~% o
- } catch (OpenOfficeException e) {
# C; `+ a, F# m+ v) H( R - e.printStackTrace();' Z. F+ ], B! T/ y1 P- R4 l1 w
- System.out.println("****swf转换器异常,读取转换文件失败****");8 H. ^# J$ ?* j4 ^: |+ N
- return false;' U9 a' T/ D' U" { l7 c6 s2 e
- } catch (Exception e) {, c8 @& P; N- y1 A6 Z& `
- e.printStackTrace();
1 a+ ]5 \9 D3 n" f) N5 I - return false;
/ {9 g: A6 S* I( V - }4 |4 y! s( G+ c' t* ^+ t @
- } else {
% X% L4 t. D) _" O. h5 D% s - System.out.println("****swf转换器异常,需要转换的文档不存在,无法转换****");
5 p0 e0 h* ?. u; v6 [- w: S. } - return false;, ~% ?1 ?" C8 P9 c
- }. m: r# h$ k& A, c
- }
复制代码 将pdf文件转换为swf文件:
9 @) z) k4 w I9 U' k# C- /**
3 F% t% T+ J/ ]9 s C$ E; ^9 N - * 将pdf文件转换为swf文件。0 N6 M G- B' ?8 e7 H4 f6 E
- *2 y n9 L+ E" P
- * @author ghj
( j* K1 s1 F. s# w - */$ f8 \$ B5 ~% _ g; P
- private Map<String, String> converFromPdfToSwf(String pdfFilePath,String swfFileSavePath){
. T6 N. c1 S1 {' A5 @1 `% J* i - String OS = System.getProperty("os.name").toLowerCase(); & {0 @1 w" [# t) O. c
- Map<String, String> returnMap = new HashMap<String, String>();: a! N9 h1 v! x/ k- D
- File pdfFile = new File(pdfFilePath);
1 i+ N F4 j& F2 J - Runtime r = Runtime.getRuntime();
. N& _" ?/ W8 h; [) h - if (pdfFile.exists()) {
$ T& c0 x0 a; R2 R$ n - String SWFTools_HOME = ConfProperties.getSWFToolsHome();// SWFTools的安装根目录
7 F& ^3 ^# D4 E$ n% T' y - try {
8 _. J* c n+ Q - if (OS.indexOf("windows")>=0) {// windows环境处理 j* A3 V! p0 L9 P S
- Process process = r.exec(SWFTools_HOME+"/pdf2swf.exe "+ pdfFilePath + " -s flashversion=9 -o "+ swfFileSavePath);
D* ~% S6 T: J' t - System.out.print(loadStream(process.getInputStream()));
# x9 f% ^9 d! | - System.err.print(loadStream(process.getErrorStream()));$ B8 r' L6 J L- B q+ D
- System.out.print(loadStream(process.getInputStream()));( Y* e3 Y( U& V+ I/ ^" N2 j* _! o0 c
- System.err.println("****swf转换成功,文件输出:"+ swfFileSavePath + "****");
8 D4 \% I1 C! |- e8 P2 b - process.destroy();// 销毁进程" @+ p# Y7 F5 D. {2 K- t7 v
- } else if (OS.indexOf("linux")>=0) {// linux环境处理; j4 e! G% F" A+ @+ V
- Process process = r.exec(SWFTools_HOME+"/pdf2swf "+ pdfFilePath + " -o " + swfFileSavePath + " -T 9");
2 q1 e) L" ?7 g% O4 e8 D - System.out.print(loadStream(process.getInputStream()));
( g s' \ Y4 J. d' `) M- c - System.err.print(loadStream(process.getErrorStream()));
1 H$ W! t% t, n! z - System.err.println("****swf转换成功,文件输出:"+ swfFileSavePath + "****");
- R9 M6 u* r8 i1 G7 M, Y6 t( p - process.destroy();// 销毁进程3 x* G( g" S! X
- }3 G) h9 [( P: u7 D8 J2 `3 C4 @4 n
- if (pdfFile.exists()) {9 ~! Y# l- T1 J- ?6 {& r
- pdfFile.delete();//转换成功以后删除上传的pdf文件和转换的pdf文件。 s, B6 R$ |9 K* a) o4 `
- }' c& T- y2 k" _/ m7 t' J; N) P
- returnMap.put("status", "true");' m$ o& U! e! A {% ^+ K1 R. k
- returnMap.put("swfFileName", swfFileSavePath.substring(swfFileSavePath.lastIndexOf("/")+1));//便于获取转换后swf文件的名字# R/ o, v& c3 ?% u6 n
- } catch (IOException e) {$ h6 t( g/ n7 o8 @* g% K5 t
- e.printStackTrace();4 Y' k! r- ]! a6 l* x6 B/ j: h
- returnMap.put("status", "false");
" h1 `4 `5 X, U - }$ j4 r: @; ^( J0 f1 o4 D0 N
- return returnMap;
7 F+ p9 Y, v9 N& j2 \ - } else {8 h+ G5 O# A: C
- System.out.println("****pdf不存在,无法转换****");
: W2 [6 d; f( O+ w0 D7 p j - returnMap.put("status", "false");9 K, }6 |. P/ T0 T1 o% N \
- return returnMap;8 Q+ @1 Q2 Y% I7 h% K/ N7 W- U
- }
- j" [( _2 \6 \+ m% o7 n; O - }
复制代码
5 U& e* q8 I: k3 }四:运行项目测试项目前 请先运行安装好的OpenOffice、swftools2 n, d1 R2 I0 H$ y, q* s
测试页面:$ D/ t. q* K# a* _: W" h
, S) }3 C; w( J7 J1 U: w
3 U/ i' m" L2 x5 w3 t0 |! ?- Z+ i, m3 E! [9 K" u
9 ~" Y+ ]4 `4 X- w: F! W0 }
5 W( S, k- u8 c; f. N- e8 S
: Y* j- V, W' F: Y3 e% l" U1 [
, D. l5 J3 t2 Z5 v2 d+ c: Q2 N# E源码下载地址:点击下载
" _6 |7 Q, P2 c/ I& t: B7 y; W. B& R1 h5 x' W& m
6 E% l4 e% K1 |( |% D软件下载地址:点击下载8 b. r8 [! ?3 A' t
+ ^# }( i: W! ~, C' X2 R0 j
" m; Y" H5 p" i e |
|