TA的每日心情 | 衰 2021-2-2 11:21 |
---|
签到天数: 36 天 [LV.5]常住居民I
|
一:测试平台 win7 64位系统. E8 M8 j: D7 m7 F# z& {* x& Y, @
二:准备软件 OpenOffice、swftools" L" ?# d8 f2 J! D( f, X
OpenOffice 下载地址:http://www.openoffice.org/download/index.html
: Q8 {( B8 K2 D0 h3 ?swftools下载地址:http://www.swftools.org/download.html4 s9 H ]7 j0 W# V$ ~' d* X
三:测试代码4 Y) H# p# ~$ M- z
1、conf.properties 软软件路径配置- u: f7 E& `9 N8 J& X4 n N- D2 m
- OpenOffice_HOME = C:/Program Files (x86)/OpenOffice 4
& Z( d: Y! w! t, ?; \
3 {1 u+ Q% T' K8 |- SWFTools_HOME = D:/SWF/SWFTools
复制代码 第一行 是OpenOffice 的安装路径 安装的时候请记住。
: u# P5 q, n+ ^1 O8 D& Y第二行 是swftools的安装路径。
( b2 i7 h/ t# G; h你可以自定义安装路径最好放到一起、便于管理。4 S, I. N# H" B$ F- I
2、文档转换4 i( j0 g6 ~1 k3 d6 T$ @- p$ L
- /*** I( K2 `4 h5 w: Q$ k4 o1 e. \( W
- * 将odt、doc、docx、ppt或pptx格式的文件转换为pdf文件,如果文件后缀是pdf,则直接返回true。
$ \; N, [# [, l - * ( H R1 j5 A, I
- * fileSuffix 文件的后缀。* W: s* I# q' I' a
- */; v* }. B5 f3 h8 W7 [
- private boolean converToPdf(String sourceFilePath, String pdfFileSavePath){
. ]3 S$ c$ u/ Q0 X - File sourceFile = new File(sourceFilePath);
+ ?. _* x0 g% a/ i - if (sourceFile.exists()) {/ @7 w$ E$ Z3 n2 w1 g) l! C6 {
- String OpenOffice_HOME = ConfProperties.getOpenOfficeHome();//OpenOffice的安装根目录
& U1 e* F: g6 b j - String command = OpenOffice_HOME + "/program/soffice.exe -headless -accept="socket,host=127.0.0.1,port=8100;urp;"";
1 d; ]7 @( F8 L4 F5 X1 x - System.out.println("command"+command);
9 \% g. U7 \+ O2 f5 d' b7 e6 s - try {
/ o7 {5 k, L" S' r$ c+ q - Process process = Runtime.getRuntime().exec(command);//启动OpenOffice的服务
- s1 y5 \/ G; h% ]; r - OpenOfficeConnection connection = new SocketOpenOfficeConnection("127.0.0.1", 8100);0 u- j% I1 r% r* G1 ~( A! V z
- connection.connect();
: F1 O& V6 K$ \7 P% t8 Q - if(connection.isConnected()){//如果连接成功
( L! n/ ~1 M1 \! G4 C# H - DocumentConverter converter = new OpenOfficeDocumentConverter(connection);: t8 L* L% U* I# N P7 h
- converter.convert(sourceFile, new File(pdfFileSavePath));
5 C- S! U3 J# d- ~7 m - connection.disconnect();// close the connection: p9 m0 a! D9 b$ i' E. q
- process.destroy();// 封闭OpenOffice服务的进程
" ^# s$ X# G! s8 L. H2 t - System.out.println("****pdf转换成功,PDF输出:" + pdfFileSavePath+ "****"); - |* {( F Y0 b+ n: U" j
- return true;
. G7 l t/ O% b - }else{
, H4 ^" K I! M& k. n - return false;//swf转换器异常,openoffice连接失败!
# B m* v( f1 u# d O0 H - }
4 T5 O. O% w E, H1 F - } catch (ConnectException e) {! k1 D3 W1 r( f: z
- e.printStackTrace();
. Q9 T8 {/ L1 C. M! t - System.out.println("****swf转换器异常,openoffice服务未启动!****"); O2 m' V5 s2 H8 ^; G/ p" u: H
- return false; b. d F' U1 W M P2 P \- v
- } catch (OpenOfficeException e) {
* e2 f; G: _2 Y' c/ k% y - e.printStackTrace();
. s4 r8 e- K* H R - System.out.println("****swf转换器异常,读取转换文件失败****");! k' Z/ d/ T0 t' v& }: d
- return false;
0 I" T f8 [6 p6 ~9 U5 e( { - } catch (Exception e) {. m5 C2 d9 i% h5 V- `$ k- q) f
- e.printStackTrace();! D, w5 V, @8 `! y
- return false;/ j4 Y7 [$ t0 r! D% \
- }, `# }9 S; K2 _
- } else {
& a3 E; W5 u1 G" h) X - System.out.println("****swf转换器异常,需要转换的文档不存在,无法转换****");
9 B& n' w2 J; a) a" N - return false;
, X! e4 u0 ^, V4 K - }; n+ E! E4 u8 u& |) K
- }
复制代码 将pdf文件转换为swf文件:
( Z8 q) ^( U% R- P1 I" ^; a) S- /**
* C5 O7 G# D! x! e0 [9 H" v+ M - * 将pdf文件转换为swf文件。
- K6 J3 j+ M# y% g& w; W. i4 Y - *, ^& @3 y, g9 p- `; W7 }
- * @author ghj; Y8 m A& U* f$ m" h
- */, z- J* l: s( z' `6 m0 ?
- private Map<String, String> converFromPdfToSwf(String pdfFilePath,String swfFileSavePath){
5 {6 g# N4 S( [ - String OS = System.getProperty("os.name").toLowerCase(); + m1 v- M2 n, E! y E: g6 }) P
- Map<String, String> returnMap = new HashMap<String, String>();
, G3 r) W# k; C- u$ W3 ^ - File pdfFile = new File(pdfFilePath);
" S+ T. i: A0 p6 r9 P$ G - Runtime r = Runtime.getRuntime();4 k0 g0 f* u5 _3 { w- S
- if (pdfFile.exists()) {
1 w, _7 t* y/ | ^% ^2 }/ Z/ ?, Z - String SWFTools_HOME = ConfProperties.getSWFToolsHome();// SWFTools的安装根目录
- B a0 s& s5 A- S, Z2 J5 e/ ] ? - try {
1 \& o& U5 j$ O" C - if (OS.indexOf("windows")>=0) {// windows环境处理
, Z- |2 J, X; I1 S/ \ - Process process = r.exec(SWFTools_HOME+"/pdf2swf.exe "+ pdfFilePath + " -s flashversion=9 -o "+ swfFileSavePath);
1 Y4 q2 E, Z* ~4 T% K - System.out.print(loadStream(process.getInputStream()));& M0 K: U# L# I
- System.err.print(loadStream(process.getErrorStream())); F% b9 J9 K. L1 }6 M* C+ y1 ]- F
- System.out.print(loadStream(process.getInputStream()));
4 r' [$ t: v* i5 N" W# u - System.err.println("****swf转换成功,文件输出:"+ swfFileSavePath + "****");
2 P) o! f6 i7 F4 N9 ~8 v6 L4 ~6 Y8 y- q - process.destroy();// 销毁进程
, T8 _/ K/ L+ d" L# o; c# \ - } else if (OS.indexOf("linux")>=0) {// linux环境处理
" ~+ n) M/ I$ J1 P - Process process = r.exec(SWFTools_HOME+"/pdf2swf "+ pdfFilePath + " -o " + swfFileSavePath + " -T 9");! S1 X2 g$ R; A7 C4 M# w
- System.out.print(loadStream(process.getInputStream()));8 F# u# V. j7 g; C7 X& X: F9 |
- System.err.print(loadStream(process.getErrorStream()));
$ H: R1 K8 n& ^( R( K1 { - System.err.println("****swf转换成功,文件输出:"+ swfFileSavePath + "****");
7 T0 m; C8 R4 A: o) B - process.destroy();// 销毁进程; P @2 f) l) ]3 W6 ~. G. b" I
- }
% ~9 b& g0 s( S) _2 o - if (pdfFile.exists()) {
1 I2 T1 w% D5 A. [; c5 w" ~ - pdfFile.delete();//转换成功以后删除上传的pdf文件和转换的pdf文件。
9 [6 x% U; k+ t4 ~ - }
6 s: t6 }: f( h% n' E4 r( L/ u - returnMap.put("status", "true");2 X1 l+ z3 D4 `; l' e
- returnMap.put("swfFileName", swfFileSavePath.substring(swfFileSavePath.lastIndexOf("/")+1));//便于获取转换后swf文件的名字3 o& \+ T2 V% ~1 B9 {: W
- } catch (IOException e) {
* |$ k' n# l4 L - e.printStackTrace();
. K% i! @# X) ]9 K) B7 v - returnMap.put("status", "false");; z, W9 G( v. u4 _
- }
0 F6 p) u! J1 G1 U+ o* s6 M. O - return returnMap;
) F5 L% ^& z. d# H) o - } else {
9 E7 m5 R( U9 Q7 _. d - System.out.println("****pdf不存在,无法转换****");- Y; T! }/ n: m/ x# s/ [% r
- returnMap.put("status", "false");
4 N. y" e8 X" J, H( ? - return returnMap; N/ b- e0 N0 @
- }! ]+ v$ j) N5 T3 u
- }
复制代码 ; n3 G, r8 _$ s7 k( q
四:运行项目测试项目前 请先运行安装好的OpenOffice、swftools1 Q+ w% C- R. _% u* l
测试页面:
4 H% l# r3 X2 F
, I9 z) R+ F( G y/ S5 T
' Y* r# w2 I0 c3 J ~7 [
4 c4 ^9 r5 Z3 m8 d2 o
9 M/ a% J2 b! O
$ R# {3 G3 k* k! F
# S" ^8 Y: h) A& J0 e! f- S4 K& N& T7 z, `3 l+ x. Y
源码下载地址:点击下载
* y+ e% P6 D% ^' B# X ^4 D# O$ P! O$ }$ d/ }, D
. R8 w' q$ x# H* q1 M) a( L
软件下载地址:点击下载
! I# M5 Y1 _) ]& T7 z q n: N5 d. B2 V* _! J
! n) m! i- m( _2 S
|
|