TA的每日心情 | 衰 2021-2-2 11:21 |
---|
签到天数: 36 天 [LV.5]常住居民I
|
一:测试平台 win7 64位系统0 w2 L; { e0 ^+ [2 }
二:准备软件 OpenOffice、swftools1 |3 L0 m( x( h4 ~$ X1 P7 q
OpenOffice 下载地址:http://www.openoffice.org/download/index.html
2 S- ~0 O r9 K# d; \7 E, hswftools下载地址:http://www.swftools.org/download.html, h+ [, r a& ]5 A- |( N2 H% S# \
三:测试代码$ b7 P0 T: W0 y1 ^: l1 o
1、conf.properties 软软件路径配置9 f+ f( j/ Z2 n
- OpenOffice_HOME = C:/Program Files (x86)/OpenOffice 4
7 X0 m5 v: A. F7 N7 X# [
( H3 u, K" t; Z5 n2 P- SWFTools_HOME = D:/SWF/SWFTools
复制代码 第一行 是OpenOffice 的安装路径 安装的时候请记住。
' Z& M( r* \# R. x0 e' D( k1 x6 L) O第二行 是swftools的安装路径。! S3 J' u8 O3 A( J
你可以自定义安装路径最好放到一起、便于管理。' V$ I; l9 e% k) b& j' u1 N
2、文档转换
$ P0 B* f& h! h- /**+ s0 O& C7 b6 u
- * 将odt、doc、docx、ppt或pptx格式的文件转换为pdf文件,如果文件后缀是pdf,则直接返回true。& c2 ?9 P, {; W. ^
- *
+ t( J- E6 m$ T/ ?+ w/ K* E - * fileSuffix 文件的后缀。$ ^( l6 ]- z6 f- b7 Y
- */; q6 Z8 M8 E) L6 ?
- private boolean converToPdf(String sourceFilePath, String pdfFileSavePath){
4 W5 F* i) f! ]% m; A$ w3 u" a - File sourceFile = new File(sourceFilePath);
- Q, f& x/ }1 {8 [; h7 X - if (sourceFile.exists()) {( L% R1 ]/ X0 r. ]5 f5 S9 L5 T! G
- String OpenOffice_HOME = ConfProperties.getOpenOfficeHome();//OpenOffice的安装根目录
) [, J6 G. e0 K; F - String command = OpenOffice_HOME + "/program/soffice.exe -headless -accept="socket,host=127.0.0.1,port=8100;urp;"";( l, y/ x4 ^& K
- System.out.println("command"+command);, i# Z1 L% e( x" t
- try {
. @+ `3 A2 @; J - Process process = Runtime.getRuntime().exec(command);//启动OpenOffice的服务
* g% e3 p' R: P; k) \0 a* a; Q a - OpenOfficeConnection connection = new SocketOpenOfficeConnection("127.0.0.1", 8100);
6 Y* F( i. V1 ]6 d - connection.connect();
U( ~5 ?; @' X - if(connection.isConnected()){//如果连接成功/ Y' A9 J# j- E' x4 T/ p
- DocumentConverter converter = new OpenOfficeDocumentConverter(connection);; T8 i# | F8 t( K, g
- converter.convert(sourceFile, new File(pdfFileSavePath));. k p# A% V1 v$ R j) x: [8 D& I
- connection.disconnect();// close the connection/ W/ g2 y" p% x9 Q+ q6 C
- process.destroy();// 封闭OpenOffice服务的进程
' M: i) m! h7 s! T7 J2 ~ - System.out.println("****pdf转换成功,PDF输出:" + pdfFileSavePath+ "****");
9 f) p9 y' x0 e% H1 a3 a - return true;
0 l4 O. J j! T y1 _7 v, E8 p - }else{
8 {8 K d0 N" a0 S - return false;//swf转换器异常,openoffice连接失败! @& a6 O6 b, H7 d5 D& _
- }
8 ~9 O4 d, O A0 k - } catch (ConnectException e) {
/ f% [9 B7 x# Y - e.printStackTrace();0 W- M* j O ~. l& [
- System.out.println("****swf转换器异常,openoffice服务未启动!****");
( K; E9 V1 T3 K# H3 P6 M% j4 x0 {+ y - return false;
: q$ b$ e, _: Y- C& l) _% T, c - } catch (OpenOfficeException e) {
. U/ `7 Z2 u1 T. P4 [" x( _9 ` - e.printStackTrace();
: r5 W) Y" ]: L J1 y) m/ N - System.out.println("****swf转换器异常,读取转换文件失败****");- T8 P; A: D8 m4 X) J& U
- return false;, i" Q) e1 B6 U1 J8 V
- } catch (Exception e) {' v S& V1 l, R% N: R! h% W# X7 H
- e.printStackTrace();+ H: U6 v ^; E/ f
- return false;
, o# j* y) d* a& T7 P+ {$ b1 p - }$ T4 r$ V* r$ U( _
- } else {
( L% s, B3 z0 G, k& h" k - System.out.println("****swf转换器异常,需要转换的文档不存在,无法转换****");0 ]& y( O- } J* a! E
- return false;# a r2 s$ B" I( s+ e4 M4 t
- }, B7 z# i7 l- P' w. x$ K/ _
- }
复制代码 将pdf文件转换为swf文件:
1 k- Y7 m' O/ q7 L7 f+ m- /**# {$ R) g r, T0 B8 j! D' E/ t6 W
- * 将pdf文件转换为swf文件。8 {, \ Y' ]% Z/ j/ ^) ]
- *
7 v# V' w+ k3 [9 k6 s2 [ - * @author ghj! k& B6 A9 d! s4 K
- */5 B& c q6 [: U& l# ?
- private Map<String, String> converFromPdfToSwf(String pdfFilePath,String swfFileSavePath){4 T$ ?! X$ C0 @$ Q: a. x) \0 w
- String OS = System.getProperty("os.name").toLowerCase(); 1 [$ k1 M- m5 ?, ^; U3 {
- Map<String, String> returnMap = new HashMap<String, String>();# \4 Y& X" d& ~/ Y
- File pdfFile = new File(pdfFilePath);& a- W _! {7 W; v" B$ s
- Runtime r = Runtime.getRuntime();1 s6 m& h8 g! T" ~: m
- if (pdfFile.exists()) {* z! }4 h1 S4 R3 V9 h, {2 ~# |- l% h
- String SWFTools_HOME = ConfProperties.getSWFToolsHome();// SWFTools的安装根目录
2 @+ D6 \; V- z( f+ ?( Y" h; Z8 w7 W - try {
. \7 ~0 @$ N" M! { - if (OS.indexOf("windows")>=0) {// windows环境处理4 H* D0 I, z# M1 T& Z6 L
- Process process = r.exec(SWFTools_HOME+"/pdf2swf.exe "+ pdfFilePath + " -s flashversion=9 -o "+ swfFileSavePath);( m" K) T6 [# Q- i' B1 b/ f( K
- System.out.print(loadStream(process.getInputStream()));
: N& n5 K% X+ u$ a6 n - System.err.print(loadStream(process.getErrorStream()));
8 W: U0 e9 ^; G5 ]( y3 O0 R - System.out.print(loadStream(process.getInputStream()));
5 I& W% B: Y6 ^ Y - System.err.println("****swf转换成功,文件输出:"+ swfFileSavePath + "****");
9 r! Z/ O1 g4 T - process.destroy();// 销毁进程
/ S$ ]4 X7 l3 t/ u) c# T9 I+ H - } else if (OS.indexOf("linux")>=0) {// linux环境处理
$ w$ F) f/ Y7 d3 T8 ?* ]- m9 Z) d: x' l - Process process = r.exec(SWFTools_HOME+"/pdf2swf "+ pdfFilePath + " -o " + swfFileSavePath + " -T 9");
& D' P; f3 T6 t& i - System.out.print(loadStream(process.getInputStream()));
$ C5 \" D+ Q% W G - System.err.print(loadStream(process.getErrorStream()));* U; \; Z9 u, R" v
- System.err.println("****swf转换成功,文件输出:"+ swfFileSavePath + "****");; D$ h* ~" J' G/ o
- process.destroy();// 销毁进程* ~' I, Y+ s/ l! ~& q* _% h
- }4 M! y& _7 t& N6 N, ^& j
- if (pdfFile.exists()) {
) W. ?4 t% |) d, }! J( t - pdfFile.delete();//转换成功以后删除上传的pdf文件和转换的pdf文件。
; j G' {! S& e& B) ` - }8 A, J' U9 l& X' z3 [3 [0 T+ q) B
- returnMap.put("status", "true");
7 M* ^2 ~8 ?0 I, h Y- p# K - returnMap.put("swfFileName", swfFileSavePath.substring(swfFileSavePath.lastIndexOf("/")+1));//便于获取转换后swf文件的名字
- k$ q& V2 [2 x$ S1 X L - } catch (IOException e) {
* o D" M% m# r* v5 R - e.printStackTrace();
: x7 h7 F% Y& f( l5 D$ A - returnMap.put("status", "false");; C" V) E8 G& x# A' D( ~
- }+ R& y4 c, _8 }0 ~' ]3 A
- return returnMap;. ~7 K( r3 S( J; K
- } else {: S$ g8 o5 {/ v0 H3 k5 G
- System.out.println("****pdf不存在,无法转换****");9 T( T2 z/ A/ X t# k6 W' ~
- returnMap.put("status", "false");3 A/ n5 y3 a" X- ?( \! _- m
- return returnMap;! {, `6 m& S' [( C8 ` N% C1 r1 z
- }
5 m. h; |, Z! w; a& n- U Y - }
复制代码 0 q0 [' [! e9 R7 }) n# l% l p" N/ [
四:运行项目测试项目前 请先运行安装好的OpenOffice、swftools. j( u0 B; g) Z6 l
测试页面:
L8 G0 `3 {7 g5 R4 E
* C3 v3 g, o8 j1 ]8 W9 J5 f0 w! x4 X# {/ L7 T6 A$ H5 R5 C* T% \- n
) E$ V7 l, C% S% o& x3 M9 X. c; X# a( s3 Q. m
; J- A! X) d) R9 e( A
7 h5 i+ [( s: a# c, G0 Y, N9 b
! Y0 i, T+ `# f/ V1 a; H( w/ L& v源码下载地址:点击下载
/ U7 P. R9 j+ ^9 G" C3 A1 n6 ^/ \; l# @6 l" ]- y1 I
8 [% u0 m/ Y w5 d软件下载地址:点击下载' s0 i u+ x5 X/ F
9 w, }2 j! K& e, R6 B8 E$ A0 z
8 G0 x) { p0 X/ P# j& ^9 `& H
|
|