TA的每日心情 | 衰 2021-2-2 11:21 |
---|
签到天数: 36 天 [LV.5]常住居民I
|
一:测试平台 win7 64位系统
A }5 A5 v0 L二:准备软件 OpenOffice、swftools4 B2 q4 T) I- W
OpenOffice 下载地址:http://www.openoffice.org/download/index.html
" K8 K e6 B& D7 S1 f+ w; H' ?swftools下载地址:http://www.swftools.org/download.html
* b! T6 ]" v1 d, f' ]5 J; P三:测试代码) u1 G/ S1 c) n, Z' M3 B9 D) L
1、conf.properties 软软件路径配置
; }# A# `2 G! e; R3 A3 A- OpenOffice_HOME = C:/Program Files (x86)/OpenOffice 49 M5 M$ x( s2 `" ^* e$ W3 o k0 V
- ' s- c( G& E" a
- SWFTools_HOME = D:/SWF/SWFTools
复制代码 第一行 是OpenOffice 的安装路径 安装的时候请记住。+ n9 S, N4 K5 o& C8 W& ~
第二行 是swftools的安装路径。
9 H. d+ r' R! o; B- ]你可以自定义安装路径最好放到一起、便于管理。+ ~1 q' Z' `& t5 m
2、文档转换4 y5 F! z7 n* X% K( X1 K U
- /**" M4 b4 n8 J F% r6 m7 Z0 E: E
- * 将odt、doc、docx、ppt或pptx格式的文件转换为pdf文件,如果文件后缀是pdf,则直接返回true。) q/ ?0 `# h. S' ]6 g1 i/ h
- *
+ Y9 S2 Y2 ~+ ]) p- { - * fileSuffix 文件的后缀。
* y1 A- P- ]8 p& G" o - */
, ^6 a0 y1 U: x1 O - private boolean converToPdf(String sourceFilePath, String pdfFileSavePath){
) H* U; K' v% |! _9 P: v - File sourceFile = new File(sourceFilePath);% h/ d/ t4 |( T5 z2 w: ?
- if (sourceFile.exists()) {
' y7 Q. z; H# x9 Y/ r' J - String OpenOffice_HOME = ConfProperties.getOpenOfficeHome();//OpenOffice的安装根目录
5 |2 Q$ ^. W) Z+ _/ y( l1 ?6 t - String command = OpenOffice_HOME + "/program/soffice.exe -headless -accept="socket,host=127.0.0.1,port=8100;urp;"";
' h8 F2 i5 q) |+ G$ h - System.out.println("command"+command);
, j- u$ i# q5 n8 d9 d. U0 @ - try {1 G! I( w8 P7 v$ |5 i& s! _$ K
- Process process = Runtime.getRuntime().exec(command);//启动OpenOffice的服务
( S2 H! m& c4 T3 T3 T5 w* B% H+ i3 I - OpenOfficeConnection connection = new SocketOpenOfficeConnection("127.0.0.1", 8100);, W0 m5 I& J5 s
- connection.connect();
! L. E; d2 Y6 W8 i5 r2 L - if(connection.isConnected()){//如果连接成功2 g4 h. q9 h( S3 {. [
- DocumentConverter converter = new OpenOfficeDocumentConverter(connection);4 @( s+ B0 v4 N! a+ E' E
- converter.convert(sourceFile, new File(pdfFileSavePath));( K; X9 `8 m& d- l8 a4 B0 X
- connection.disconnect();// close the connection
1 e9 I4 ]. u( I2 Q6 X! M - process.destroy();// 封闭OpenOffice服务的进程- J, i( r/ Y% B- U
- System.out.println("****pdf转换成功,PDF输出:" + pdfFileSavePath+ "****"); ) N3 n4 D4 Z4 J1 S
- return true;9 d2 `5 d4 i; ^3 C
- }else{
- ?6 g/ a2 l. U8 B E6 u - return false;//swf转换器异常,openoffice连接失败!
1 A, u/ l0 \* U& ]; r - }4 ?9 t# O, p/ b9 I" U* d4 m
- } catch (ConnectException e) {0 @0 c; @( R6 e8 n
- e.printStackTrace();
' f9 T9 M" x" N7 C$ a( `1 v2 i' j - System.out.println("****swf转换器异常,openoffice服务未启动!****");
! F8 }+ Y( I0 X, M6 G - return false;# u7 v# l: V6 M v" _; A
- } catch (OpenOfficeException e) {
8 h) |6 s) I! [ - e.printStackTrace();. R1 t" V3 d0 C6 }& X6 N
- System.out.println("****swf转换器异常,读取转换文件失败****");
- n2 \; }3 @) \" e) E2 { - return false;/ {) K' r* q$ o
- } catch (Exception e) {
8 ~- j5 V' Y o4 `) q/ ?# [& Q/ r - e.printStackTrace();
! [* Z" E' d! B/ R' j' o; l - return false;
+ r ~) T8 R: f7 L& I# t - }. `- s( w+ \- U$ _
- } else {
7 a( ?+ V( j* ^. V: j" a& `% D - System.out.println("****swf转换器异常,需要转换的文档不存在,无法转换****");
/ A7 ~1 i3 f e) @& \( Q! _ - return false;/ g& a. |( r0 _
- }0 h4 m+ u8 q; f% J; m6 G
- }
复制代码 将pdf文件转换为swf文件:7 Q3 ?9 r5 S. w$ ?3 k
- /**) B' n# T* S& L; }1 Q, y* c
- * 将pdf文件转换为swf文件。
/ m/ Y' T$ f' u0 y" O8 ^ - *
- H. c, Z. ~8 H# l+ B) S4 L+ a) d" A - * @author ghj) e( n0 C! ~( h* h/ h/ l
- */# F/ z9 h8 R; ^& D- X
- private Map<String, String> converFromPdfToSwf(String pdfFilePath,String swfFileSavePath){
U4 A1 o, w) g7 I4 M0 N) j - String OS = System.getProperty("os.name").toLowerCase();
( k; b N# _: ]6 F - Map<String, String> returnMap = new HashMap<String, String>();/ J, v& z, y. g0 f2 n
- File pdfFile = new File(pdfFilePath);9 h, G$ j7 j6 K2 e2 o9 @
- Runtime r = Runtime.getRuntime();
' y/ y: m( ~( k0 V. M3 O( e- Q; h% U- ~ - if (pdfFile.exists()) {5 v( J' P2 n5 J1 t- o' N0 e. o }
- String SWFTools_HOME = ConfProperties.getSWFToolsHome();// SWFTools的安装根目录! U3 D- _+ Z+ ^3 c" {
- try {- P3 ~" g7 h+ v% Y! Y
- if (OS.indexOf("windows")>=0) {// windows环境处理; x" l* b1 |) \2 Z8 H8 J2 \ y
- Process process = r.exec(SWFTools_HOME+"/pdf2swf.exe "+ pdfFilePath + " -s flashversion=9 -o "+ swfFileSavePath);! t& C5 o' T/ j* s) l" H9 @ S9 U
- System.out.print(loadStream(process.getInputStream()));
$ L5 K3 \( \0 }' L: @2 t5 F - System.err.print(loadStream(process.getErrorStream()));
0 ]/ p- n. S8 g6 x - System.out.print(loadStream(process.getInputStream()));
1 v7 L) U9 L( U" _ - System.err.println("****swf转换成功,文件输出:"+ swfFileSavePath + "****");, B) W/ A( |/ v. t" k
- process.destroy();// 销毁进程
% G% f$ ?: I1 L0 G0 F - } else if (OS.indexOf("linux")>=0) {// linux环境处理
6 A G1 V/ O0 z2 b" I+ |; T - Process process = r.exec(SWFTools_HOME+"/pdf2swf "+ pdfFilePath + " -o " + swfFileSavePath + " -T 9");. p5 @3 f% w" P
- System.out.print(loadStream(process.getInputStream()));
" @4 u. Z: c4 z$ x; T: A - System.err.print(loadStream(process.getErrorStream()));# ]# Z. j: `, E+ s/ u+ M3 k
- System.err.println("****swf转换成功,文件输出:"+ swfFileSavePath + "****");
$ X2 k" j+ o( D9 I/ N8 { - process.destroy();// 销毁进程
1 v8 R# ]! x- f6 H - }- }. E# M0 L6 T$ E
- if (pdfFile.exists()) {
+ x0 M$ _, T4 b( U/ T8 j - pdfFile.delete();//转换成功以后删除上传的pdf文件和转换的pdf文件。
8 e* @9 _8 h2 ^0 U - }
4 x/ H! `6 K5 V4 B - returnMap.put("status", "true");
' r4 E7 P3 z% G6 |: L4 Y - returnMap.put("swfFileName", swfFileSavePath.substring(swfFileSavePath.lastIndexOf("/")+1));//便于获取转换后swf文件的名字
% b% ?2 y6 T/ J: Y - } catch (IOException e) {, Q/ M! Z# |( ~
- e.printStackTrace();# d9 D5 [$ J! R- S
- returnMap.put("status", "false");9 b& Q* @ V, N0 Y5 m) s$ k/ g
- }# Q% k) O( K6 ?! B
- return returnMap;
7 O5 q1 n' }4 T$ e) K- B - } else {1 W( [$ W% o4 @1 E, | U
- System.out.println("****pdf不存在,无法转换****");& w6 g- V: I( O q7 J6 ~! x
- returnMap.put("status", "false");! i- d1 [; o; ]. |5 r
- return returnMap;
! l1 G/ t- U9 @% N - }! ~. t' s0 p7 k4 h4 Q4 R. q
- }
复制代码 1 [1 w) c. j' p2 ^3 W
四:运行项目测试项目前 请先运行安装好的OpenOffice、swftools* t, ]6 f) K9 r3 J+ T! `( j7 B6 x
测试页面:
* |6 I6 J# N6 j) D% v g4 |; ?
$ |0 O% b! } I5 J
2 v+ K, D9 f+ @; Q4 r
3 V V& C/ T" S3 A3 ]. I- a, ]$ h& I, [. s* M2 J- t
& o" B/ ?8 h/ [5 _6 h
0 @$ r8 g, B; v) H
* s) W9 k/ M; J3 T N: @! Z源码下载地址:点击下载6 c1 z- L' T/ s4 u1 Y I1 |
$ l/ v5 @0 G: c1 Z
7 ]- A7 m @% p F( [( }软件下载地址:点击下载
! v; h* ~( o# x7 h
' R4 u$ A8 n6 P# b+ p% z
" N% @2 H# P* F, c |
|