TA的每日心情 | 衰 2021-2-2 11:21 |
---|
签到天数: 36 天 [LV.5]常住居民I
|
一:测试平台 win7 64位系统) ?/ q. u! b/ y
二:准备软件 OpenOffice、swftools
& S ^# `( B' M; t7 qOpenOffice 下载地址:http://www.openoffice.org/download/index.html
. I6 P2 p4 q+ D- l7 H4 ?swftools下载地址:http://www.swftools.org/download.html+ D" z1 H$ x' U) U
三:测试代码
p8 y0 l8 O) w; C7 h. l! t1、conf.properties 软软件路径配置
" L, {# d; P8 I3 I: G3 G7 o* H- OpenOffice_HOME = C:/Program Files (x86)/OpenOffice 4; g b c- B' T
- 6 o" z1 h5 i8 X/ F
- SWFTools_HOME = D:/SWF/SWFTools
复制代码 第一行 是OpenOffice 的安装路径 安装的时候请记住。
& J0 C1 r6 ?# y- M" E7 U9 g第二行 是swftools的安装路径。
; G: l9 J2 x6 f" B1 r你可以自定义安装路径最好放到一起、便于管理。
3 [ c' U3 I8 R2 D t$ O2、文档转换
& P, h$ t5 z. n" D3 v# R- /**- Y" E# X# |+ [! |1 Q1 i
- * 将odt、doc、docx、ppt或pptx格式的文件转换为pdf文件,如果文件后缀是pdf,则直接返回true。
- G' L6 P& @( p - *
& C: l# c3 w; r6 g' ~ - * fileSuffix 文件的后缀。1 P) x$ S S+ G8 h' L3 ~: N- H3 E& w, I
- */- C1 k9 l' D: v
- private boolean converToPdf(String sourceFilePath, String pdfFileSavePath){3 p5 P, n. S( p u% n
- File sourceFile = new File(sourceFilePath);
# Q& x2 L7 f" Z% f5 \* F; h - if (sourceFile.exists()) {+ [2 I1 Q8 _$ j
- String OpenOffice_HOME = ConfProperties.getOpenOfficeHome();//OpenOffice的安装根目录5 e3 G9 \$ g# E9 l4 a
- String command = OpenOffice_HOME + "/program/soffice.exe -headless -accept="socket,host=127.0.0.1,port=8100;urp;"";0 j n# u6 g+ v7 d) k( Z& J2 }, t
- System.out.println("command"+command);8 Y9 Q/ q) W2 O. Z6 O' x
- try {
6 @8 B5 Q( ]" d - Process process = Runtime.getRuntime().exec(command);//启动OpenOffice的服务
$ O: d! p0 \. `$ Z2 I+ q* w - OpenOfficeConnection connection = new SocketOpenOfficeConnection("127.0.0.1", 8100);
, x1 e; W3 U4 p. { - connection.connect();
; N" ]0 `% D: H' E% d - if(connection.isConnected()){//如果连接成功" q# |) s/ v, I- ~# m) Y
- DocumentConverter converter = new OpenOfficeDocumentConverter(connection);/ l7 y$ x9 x5 T- s# b; F
- converter.convert(sourceFile, new File(pdfFileSavePath));
$ h8 A( L' E5 C" _ - connection.disconnect();// close the connection ` E3 e, [4 V3 b2 r2 `
- process.destroy();// 封闭OpenOffice服务的进程
2 g8 r& a Q. ^$ p. t9 R$ D - System.out.println("****pdf转换成功,PDF输出:" + pdfFileSavePath+ "****");
$ z+ I) H" b7 s7 g' E$ \: z - return true;7 c2 _# r/ r3 \
- }else{6 R: q% u% V6 ^4 _* r3 c
- return false;//swf转换器异常,openoffice连接失败!* L. G, ?" a8 B# t" F: g
- }! i1 }. q9 C: |6 `' `" I' X/ U
- } catch (ConnectException e) {
) ?, I3 ~% l% p! @4 m' t - e.printStackTrace();6 G* @; J& o$ ]8 \
- System.out.println("****swf转换器异常,openoffice服务未启动!****");$ |4 g$ l! Y$ c! R" o; f0 ]
- return false;
5 C" ^5 \2 l: P& d! l0 x: } - } catch (OpenOfficeException e) {% b- y) e# M: ]; J H
- e.printStackTrace();
/ C" q A/ F7 ~8 x% W1 _ - System.out.println("****swf转换器异常,读取转换文件失败****");
, j4 U2 H7 j6 @* e! ? - return false;
6 p+ E) f/ m7 d) l4 Z v& J8 [ - } catch (Exception e) {
) ?' e# |% x+ o# c" ]: J8 _ - e.printStackTrace();: {; L, L1 u' `$ y0 [0 [
- return false;8 V+ y3 o( U7 N
- }+ T+ s) e( [8 Y& t: a- ~
- } else {0 }# p* [$ p5 t$ W6 R& D
- System.out.println("****swf转换器异常,需要转换的文档不存在,无法转换****");3 D' i1 s n% F4 X4 i
- return false;
% K8 m H" `" a9 A% y$ S; v& t - }
/ X; H M+ Q6 X+ C2 D; X) W - }
复制代码 将pdf文件转换为swf文件:! A6 a- J; ~6 j0 F( M
- /*** d( A0 O$ m3 |
- * 将pdf文件转换为swf文件。4 M9 Z# s! S# ?$ r
- *
# ?$ f, ~- F1 e& p" j9 H - * @author ghj
% j' a' L" v7 z" ]" r! c& M2 A - */
0 ~9 c1 a+ n2 T5 Q& O+ c - private Map<String, String> converFromPdfToSwf(String pdfFilePath,String swfFileSavePath){/ [! p0 ~5 U( I9 j( j
- String OS = System.getProperty("os.name").toLowerCase();
8 B! V/ Y0 P" w- m7 x1 O6 w7 v, ~6 s' p - Map<String, String> returnMap = new HashMap<String, String>();
7 T5 n; P' F3 U5 P% B& q. x, S - File pdfFile = new File(pdfFilePath);
) ^% [6 X* w" s% R. J% v - Runtime r = Runtime.getRuntime();
* m. \! Q" a3 }* ^ j - if (pdfFile.exists()) {
/ q. N2 h- B9 H4 v4 A& N' C Q0 A - String SWFTools_HOME = ConfProperties.getSWFToolsHome();// SWFTools的安装根目录* f8 C3 H1 s, N( v( P' B' h0 O
- try {
) ^9 m, T3 q; L! ?5 y* Y0 U5 d m - if (OS.indexOf("windows")>=0) {// windows环境处理
, [) [4 `- {0 ^4 h - Process process = r.exec(SWFTools_HOME+"/pdf2swf.exe "+ pdfFilePath + " -s flashversion=9 -o "+ swfFileSavePath);! F4 l: `6 n' K: R+ O
- System.out.print(loadStream(process.getInputStream()));
7 Q! r7 J' \7 h3 _7 c4 d# Z' y5 z5 |$ H - System.err.print(loadStream(process.getErrorStream()));! K* N- H5 E/ \+ r3 f
- System.out.print(loadStream(process.getInputStream()));
7 n; x- q! _6 X0 K- w - System.err.println("****swf转换成功,文件输出:"+ swfFileSavePath + "****");1 t# L- Y( [% F1 _
- process.destroy();// 销毁进程
" E& N- U) | N - } else if (OS.indexOf("linux")>=0) {// linux环境处理) E5 P1 @4 D7 h5 f; l
- Process process = r.exec(SWFTools_HOME+"/pdf2swf "+ pdfFilePath + " -o " + swfFileSavePath + " -T 9");
0 t8 K* ?- n6 G% E' h" J* Z+ r" s - System.out.print(loadStream(process.getInputStream()));
E5 m, F6 R: O2 \# j) l" l+ C - System.err.print(loadStream(process.getErrorStream()));
% ^) {# ]3 R% }+ B, g - System.err.println("****swf转换成功,文件输出:"+ swfFileSavePath + "****");% m) P4 L6 b4 w+ H3 x) p `+ J3 F, |
- process.destroy();// 销毁进程
- a& Z5 f) X& ]/ k% a' @0 p' h4 i - }; {9 L. ~# T: i+ v
- if (pdfFile.exists()) {( E7 C' b* }1 Z& ~6 o) ^" [
- pdfFile.delete();//转换成功以后删除上传的pdf文件和转换的pdf文件。; J7 G8 F) \, I' O1 W
- }) G9 v& o. [7 H- d7 Q
- returnMap.put("status", "true");
" Q( w8 l5 K& x3 y3 a6 Q* @ - returnMap.put("swfFileName", swfFileSavePath.substring(swfFileSavePath.lastIndexOf("/")+1));//便于获取转换后swf文件的名字
1 ^1 ?4 r" J# i; | - } catch (IOException e) {
( w- e6 T5 Q7 B - e.printStackTrace();
- q! t* ^* x. N8 u: Z9 _& g2 F: [8 h8 t - returnMap.put("status", "false");
6 D) N# f4 V5 k/ w0 K9 ]# j) W. w - }
) V/ f) K9 P. x& H - return returnMap;
- u1 A/ q- L- |, f' ?+ C - } else {* k R5 t# ?; ^, ~) S
- System.out.println("****pdf不存在,无法转换****");# h1 e' O6 c! F3 \
- returnMap.put("status", "false");
0 P0 W n, C7 C" q: C/ x6 A - return returnMap;
7 j' V$ K- \% Z4 {1 K& c" [ - }$ L! m! w4 A1 A9 b6 q# C
- }
复制代码 5 H; [; _& F0 y% m) Y
四:运行项目测试项目前 请先运行安装好的OpenOffice、swftools
3 x# Y! F5 t: b, n" H/ |测试页面:
, |+ ]8 c8 }5 @1 _+ R
6 C/ j, {; x0 X! E
- R7 z4 `( P) I. l1 L! H
( `8 T3 O4 Y9 o6 `) E ^, h/ R2 {! R1 s0 G. ]' F
6 I6 y# K9 Y% d& M( q" ]3 W6 R! [" ~9 a
6 L1 E# A/ L% X" V
源码下载地址:点击下载
! ~9 O0 p5 D, \" X+ @! w$ o7 R& |- V0 N: ]$ ~+ h0 }+ F+ ]
4 u Y6 E# B" U8 E) q: h
软件下载地址:点击下载( l1 [, ]& V7 i
: t3 D n8 P {
9 c$ X/ L1 W6 s# k1 _# U |
|