TA的每日心情 | 衰 2021-2-2 11:21 |
|---|
签到天数: 36 天 [LV.5]常住居民I
|
一:测试平台 win7 64位系统8 I& G, C `( Z% g" n! w v5 ]9 ?" _
二:准备软件 OpenOffice、swftools
Z8 j9 ]3 D3 A# r9 lOpenOffice 下载地址:http://www.openoffice.org/download/index.html
8 b6 S v0 j! T7 n& \3 Uswftools下载地址:http://www.swftools.org/download.html/ E% ?6 I) I0 |8 {5 p
三:测试代码
# }' M& F9 w2 u7 k9 z1、conf.properties 软软件路径配置
; f# c8 e2 D! h- OpenOffice_HOME = C:/Program Files (x86)/OpenOffice 4
' u |0 K8 Z/ l$ X" o: N2 c
; F$ \$ r2 ~+ E- _* b- SWFTools_HOME = D:/SWF/SWFTools
复制代码 第一行 是OpenOffice 的安装路径 安装的时候请记住。, [8 ^4 J! ]5 J
第二行 是swftools的安装路径。! e2 k2 i1 o' V( d* z& Y7 E/ K9 _
你可以自定义安装路径最好放到一起、便于管理。2 o8 R& ~# c0 q/ u/ h/ V
2、文档转换
- t) A5 B# O/ W' c' d4 R: R- /**/ l7 g; X7 W; L# E3 g
- * 将odt、doc、docx、ppt或pptx格式的文件转换为pdf文件,如果文件后缀是pdf,则直接返回true。3 U. W9 ?+ l" ^
- *
0 r" D* ]7 P4 ?, q1 ` - * fileSuffix 文件的后缀。
& U8 M3 B* B& A' r% @& J - */
9 D+ g2 I- \$ d5 J& J6 m - private boolean converToPdf(String sourceFilePath, String pdfFileSavePath){) o) D+ j, b+ n
- File sourceFile = new File(sourceFilePath);7 V5 L4 R/ y' a& N9 e8 u
- if (sourceFile.exists()) {
0 r) ~& U8 p* m. m& v - String OpenOffice_HOME = ConfProperties.getOpenOfficeHome();//OpenOffice的安装根目录; B( l6 ] V3 x
- String command = OpenOffice_HOME + "/program/soffice.exe -headless -accept="socket,host=127.0.0.1,port=8100;urp;"";
* r* F- S, @- J2 s4 U# k# U( q' z - System.out.println("command"+command);
5 X- s# b- y; G& f - try {" j3 ]$ G$ ~/ T; K* @! J8 q; G
- Process process = Runtime.getRuntime().exec(command);//启动OpenOffice的服务2 R( Y( n8 J8 F) Z+ U$ Z
- OpenOfficeConnection connection = new SocketOpenOfficeConnection("127.0.0.1", 8100);2 n0 y; x, d1 P- F0 E. M0 {
- connection.connect();
* }4 \5 S$ y( @" U1 P$ w' j - if(connection.isConnected()){//如果连接成功9 f* d- |# b/ m( e5 J$ y6 o
- DocumentConverter converter = new OpenOfficeDocumentConverter(connection);
, R2 K5 g* y; e, ]/ o& ~' } - converter.convert(sourceFile, new File(pdfFileSavePath));# u8 c1 ~# R& i' e/ s4 B+ X
- connection.disconnect();// close the connection
1 r. s. j. K" C$ \( i5 X0 u1 [4 x - process.destroy();// 封闭OpenOffice服务的进程
7 e; h* Z% i! U9 N g% {# _+ C- z - System.out.println("****pdf转换成功,PDF输出:" + pdfFileSavePath+ "****"); 1 e# r4 l v- R; g, j
- return true;
! P5 w( e" z& _( H, p - }else{
& K4 g9 L; v4 H - return false;//swf转换器异常,openoffice连接失败!
! E0 U4 a* k8 {) E( m5 t; d - }
" b2 r' m/ g$ x& p - } catch (ConnectException e) {8 L' R( j, ?; \7 w; t
- e.printStackTrace();
8 d) e9 V: c1 ]1 ?2 ^1 f, K - System.out.println("****swf转换器异常,openoffice服务未启动!****");& f* |' z' B4 p/ H
- return false;" e+ S O4 c7 i+ `2 l! `- v
- } catch (OpenOfficeException e) {$ D* J$ Z! }0 D' _# g' j5 I
- e.printStackTrace();
4 Z# @& `# C$ a- Z2 x - System.out.println("****swf转换器异常,读取转换文件失败****");
$ K! b Q! ?$ E& \- `4 w/ X! | - return false;
2 X/ g0 S% d/ e& {! q3 a$ K. F - } catch (Exception e) {
& j5 G5 r, h- `2 y - e.printStackTrace();
. Q( N% d# b1 U* m3 i - return false;
9 _+ x8 z7 P5 c L! P, w' M. a; L - }
$ v- {6 O, B6 e% k) b - } else {
( a6 R D( u0 z5 z7 ?2 r9 N2 E* E" { - System.out.println("****swf转换器异常,需要转换的文档不存在,无法转换****");; s/ W+ U$ w, Z$ M' ]) a
- return false;
& `" ]* V2 c7 {/ Z3 E, i9 g - }
2 Y; T9 A4 p- j/ j - }
复制代码 将pdf文件转换为swf文件:: k- J+ l* ]- P& V5 h
- /**
# r! R: u2 a6 W: k4 o! q y2 { - * 将pdf文件转换为swf文件。
% i0 W" O" Q# p& }# c2 [' e - *
) r* H8 z7 c& @* H6 \) p - * @author ghj; i9 @& u4 R% `. O, S6 @
- */
4 o7 J; q! _9 p' \( \+ a$ ?1 \ - private Map<String, String> converFromPdfToSwf(String pdfFilePath,String swfFileSavePath){
" d& G7 ?& ^3 ^6 J8 ] - String OS = System.getProperty("os.name").toLowerCase(); 4 {) Q4 J! K1 ]. q9 a
- Map<String, String> returnMap = new HashMap<String, String>();* d) ~3 L) ]$ y
- File pdfFile = new File(pdfFilePath);
6 L! j. q: c. n7 q- K( M9 m - Runtime r = Runtime.getRuntime();
$ ?. r# t5 D3 k. d - if (pdfFile.exists()) {
0 P( |- D1 i1 J* C# h E! ?" C - String SWFTools_HOME = ConfProperties.getSWFToolsHome();// SWFTools的安装根目录
7 C7 T3 d4 m5 a$ o) U. } - try {, ~8 ?. e! k) I1 K5 m) L w
- if (OS.indexOf("windows")>=0) {// windows环境处理# }# g' l2 P% F! W
- Process process = r.exec(SWFTools_HOME+"/pdf2swf.exe "+ pdfFilePath + " -s flashversion=9 -o "+ swfFileSavePath);! A, P' N" }# p) G
- System.out.print(loadStream(process.getInputStream()));, U2 }3 f; a" B0 c; n
- System.err.print(loadStream(process.getErrorStream()));
# E- }2 N& _. [" X' b - System.out.print(loadStream(process.getInputStream()));4 a$ _* j& w5 j: V6 B \1 o+ u, s- X
- System.err.println("****swf转换成功,文件输出:"+ swfFileSavePath + "****");
; b" |+ Q' ` T3 ^+ V - process.destroy();// 销毁进程
& Q: s# \" T1 T% k6 ^ - } else if (OS.indexOf("linux")>=0) {// linux环境处理
4 O" _$ t! w% a3 i9 s - Process process = r.exec(SWFTools_HOME+"/pdf2swf "+ pdfFilePath + " -o " + swfFileSavePath + " -T 9");
" T& Y. n1 z' N - System.out.print(loadStream(process.getInputStream()));
7 i$ ?. s+ a$ z" J, a2 O - System.err.print(loadStream(process.getErrorStream()));* N/ v1 v9 V- [
- System.err.println("****swf转换成功,文件输出:"+ swfFileSavePath + "****");( e# ?: ]; p% z1 l' `" o! B
- process.destroy();// 销毁进程: V6 R, S; u+ I. Z. _
- }6 n% U8 w. d- r5 | Q4 ~
- if (pdfFile.exists()) {7 [& @, T6 k2 v7 ^, j$ T) k9 F
- pdfFile.delete();//转换成功以后删除上传的pdf文件和转换的pdf文件。
2 d/ Q' p4 l2 `# F0 s# J - }
' H% `, v& v& D+ B - returnMap.put("status", "true");6 u, h( I4 m9 Q
- returnMap.put("swfFileName", swfFileSavePath.substring(swfFileSavePath.lastIndexOf("/")+1));//便于获取转换后swf文件的名字4 h. E2 g% U9 P6 O/ `& t
- } catch (IOException e) {
- q) y4 d& r- ?4 C9 F' S) d8 Y - e.printStackTrace();
' H( G: x+ |; t1 d9 c% J$ R; ?! k - returnMap.put("status", "false");
0 q* d6 e& g( T' g: a' z - }
/ D3 \4 u( r* D. ` - return returnMap;
- m( L3 H& G4 w$ w: ?9 P - } else {" S9 H5 `- i$ K I8 Y5 e9 l$ Y+ e
- System.out.println("****pdf不存在,无法转换****");5 o# N7 ~, t0 I1 j
- returnMap.put("status", "false");2 N* A6 @: L3 x8 Z; C& U, b+ ?0 t2 v
- return returnMap;6 n8 C+ C4 i* o1 x
- } D/ Q8 K7 s4 V! ?
- }
复制代码
; T, s8 ~% G, i% e% d7 t" f1 E' g( t四:运行项目测试项目前 请先运行安装好的OpenOffice、swftools! h" P+ [$ C7 o
测试页面:
) v) o( h: o9 Z1 _0 T x
/ ^2 g& u7 k% |: t% k# k2 p
) u0 F6 ?' B4 h; I% s6 m& q0 I- O$ F8 T5 w' Z' T2 l- C
& z# e9 Y) D. M
5 ^% N9 \+ ?. o7 F" B9 i
; s" y/ V. l0 Y' }/ I. L. q4 g* \4 v. I1 L3 R
源码下载地址:点击下载
# K4 H N( t: f- D% C: Z- y
6 [+ z( T) M* _: q+ ~3 Q% F7 `5 [, v: j5 L* f
软件下载地址:点击下载3 u9 u/ S [" G+ J
' m: k$ Y) j) i
4 W! p, ^$ q1 b
|
|