TA的每日心情 | 衰 2021-2-2 11:21 |
---|
签到天数: 36 天 [LV.5]常住居民I
|
一:测试平台 win7 64位系统6 A" P$ V* T! Z; [. c" D
二:准备软件 OpenOffice、swftools
- @. ^) W" I7 @ d0 mOpenOffice 下载地址:http://www.openoffice.org/download/index.html
! c4 p$ u; F8 V0 C5 Dswftools下载地址:http://www.swftools.org/download.html
! E, Z# a' A6 U% ~* N8 d6 B9 @5 L三:测试代码
: @. @: ~8 Z+ l$ w/ a1、conf.properties 软软件路径配置% P+ e6 v1 n3 T1 ]4 u, r! F$ e
- OpenOffice_HOME = C:/Program Files (x86)/OpenOffice 4
, I# _- D$ d1 Q3 [
1 u# F! Q' z0 N6 `7 C0 G2 N- SWFTools_HOME = D:/SWF/SWFTools
复制代码 第一行 是OpenOffice 的安装路径 安装的时候请记住。, S& O H/ n9 O! a8 w, }
第二行 是swftools的安装路径。
' u7 @& r4 P; m1 e4 A! B5 h你可以自定义安装路径最好放到一起、便于管理。! E0 V. @1 q+ ? ]" Y, [
2、文档转换. [3 _+ n- E+ v0 @0 p/ E p- V
- /**' b9 A$ i; s+ P; n
- * 将odt、doc、docx、ppt或pptx格式的文件转换为pdf文件,如果文件后缀是pdf,则直接返回true。$ a$ \ h/ k# k0 b( @
- *
/ T2 v( f3 a- l% d$ a! w! |6 B - * fileSuffix 文件的后缀。
2 w9 ]9 D4 C& D6 B; @ Q - */. y2 H0 g6 S; r* ]' Z: {
- private boolean converToPdf(String sourceFilePath, String pdfFileSavePath){1 {7 \, z! s. ?9 Z* |* q
- File sourceFile = new File(sourceFilePath);
, d: O( F( }4 z8 `8 V9 U' v5 f6 [, z - if (sourceFile.exists()) {. H1 Y, p) e% } T: V6 R
- String OpenOffice_HOME = ConfProperties.getOpenOfficeHome();//OpenOffice的安装根目录% Q! P9 f# l# _+ U: s/ N' {
- String command = OpenOffice_HOME + "/program/soffice.exe -headless -accept="socket,host=127.0.0.1,port=8100;urp;"";! f% f8 G* |" l- u! S
- System.out.println("command"+command);
3 I. k' {+ l) y7 N - try {1 [' T' O6 u! O+ ^3 y, ?/ ?0 ^
- Process process = Runtime.getRuntime().exec(command);//启动OpenOffice的服务
: Z- _" G0 ?6 m0 U, H5 @9 Q - OpenOfficeConnection connection = new SocketOpenOfficeConnection("127.0.0.1", 8100);
6 W5 [" A' E$ g" E5 B3 x - connection.connect();
$ m8 u$ ~; x3 Z - if(connection.isConnected()){//如果连接成功
# X B0 @! X! M0 p - DocumentConverter converter = new OpenOfficeDocumentConverter(connection);
1 b2 {; n- o' J# p4 p - converter.convert(sourceFile, new File(pdfFileSavePath));* k+ ?5 c# Y" h5 r
- connection.disconnect();// close the connection
9 X: V* Q7 V% ^2 h& s - process.destroy();// 封闭OpenOffice服务的进程
5 F% L4 {. b6 c3 o& e y - System.out.println("****pdf转换成功,PDF输出:" + pdfFileSavePath+ "****"); ! ~8 b6 g& ?- |$ ]7 P0 w" c7 y
- return true;
! `9 }1 p2 c# O1 m; Z - }else{
* Z, N6 z: ]4 ?7 ^ - return false;//swf转换器异常,openoffice连接失败!
! b1 ^2 C5 K3 l7 g - }& ^; z* G0 U& h5 b9 [ H, ?6 |
- } catch (ConnectException e) {
! ~+ L5 L1 h) W" O+ \' i - e.printStackTrace();
* |6 Z1 p( R6 {! o. r" w( I - System.out.println("****swf转换器异常,openoffice服务未启动!****");% U% }4 g' {) K
- return false;! Z7 v2 O+ e6 B3 J" s7 J! O, c
- } catch (OpenOfficeException e) {
7 L! B. o+ Y2 ^6 J - e.printStackTrace();
- @0 a/ S* p2 v; { - System.out.println("****swf转换器异常,读取转换文件失败****");
- ]4 c" w* K6 y! u+ I8 y - return false;
2 [- }; S2 D' ^8 U - } catch (Exception e) {6 r0 s3 R4 H9 V+ a6 @( C4 K
- e.printStackTrace();$ Z1 W5 t8 U3 ^! j! U
- return false;
2 b" b, n4 s; J2 G6 D3 l - }
6 ?5 d$ p: _, m. Q - } else {
- M# B' t$ B3 z* O: |" j - System.out.println("****swf转换器异常,需要转换的文档不存在,无法转换****");$ G4 G7 p) \9 K) j5 y
- return false;
0 H' ?% E7 j( t f7 r% E - }
: i! T0 ~; s+ f" x7 R2 [2 Z# I - }
复制代码 将pdf文件转换为swf文件:
9 S" P: f7 Y; z6 i- /**# ?' U% \4 K+ m
- * 将pdf文件转换为swf文件。* L, E( c4 \1 v5 X" u
- *
# o* M: d( U1 Z. L% g* F- s& o3 B4 e - * @author ghj
4 Q; f. W) I4 j" m0 w8 d* x; L* ^ - */
$ c5 ]9 f3 O) U: d5 X3 g - private Map<String, String> converFromPdfToSwf(String pdfFilePath,String swfFileSavePath){# l1 P6 g9 D) Q+ m: S8 h
- String OS = System.getProperty("os.name").toLowerCase(); * M' o' W6 a6 q7 `; |& W
- Map<String, String> returnMap = new HashMap<String, String>();
8 c5 V2 H: l% @% k& Y - File pdfFile = new File(pdfFilePath);
6 b2 }$ G B/ y( A$ c) P0 w - Runtime r = Runtime.getRuntime();
# ]" s; g4 ?7 ^0 h9 p - if (pdfFile.exists()) {
6 x6 O0 @; v4 o. ~; `0 p - String SWFTools_HOME = ConfProperties.getSWFToolsHome();// SWFTools的安装根目录
0 `7 j, g4 E" Z4 ^2 k4 F% m - try {. R7 z) j/ S8 u. Z
- if (OS.indexOf("windows")>=0) {// windows环境处理3 k) X8 X+ `) x' \( V( t9 J
- Process process = r.exec(SWFTools_HOME+"/pdf2swf.exe "+ pdfFilePath + " -s flashversion=9 -o "+ swfFileSavePath);$ A$ N! ?" h* N7 J( T0 x3 f# b3 J
- System.out.print(loadStream(process.getInputStream()));2 T& e" F8 d5 c2 \- H8 W% H4 V
- System.err.print(loadStream(process.getErrorStream()));
- s& W; J9 r# V9 ] - System.out.print(loadStream(process.getInputStream()));6 h" i. p: y5 l$ a. m& @ R
- System.err.println("****swf转换成功,文件输出:"+ swfFileSavePath + "****");
* k, H2 s* }# \5 I" u; T( _ - process.destroy();// 销毁进程 o! ]; N, o1 U) D( m+ j
- } else if (OS.indexOf("linux")>=0) {// linux环境处理
- p( J5 q. |$ u5 C' w, P s/ P5 E - Process process = r.exec(SWFTools_HOME+"/pdf2swf "+ pdfFilePath + " -o " + swfFileSavePath + " -T 9");
% N+ \: ~# H6 }7 z$ v - System.out.print(loadStream(process.getInputStream()));! e, }" N6 x* O1 _& |. }. n
- System.err.print(loadStream(process.getErrorStream()));
" _1 K4 b* S4 z; b& n - System.err.println("****swf转换成功,文件输出:"+ swfFileSavePath + "****");
5 x$ x7 b, k4 Z( n - process.destroy();// 销毁进程
8 k+ s; P( D8 G" g4 l4 N) y - }, C7 ~- a; p, V7 p$ B" X6 C( t
- if (pdfFile.exists()) {( }2 `& v" u- z+ u( \0 Y
- pdfFile.delete();//转换成功以后删除上传的pdf文件和转换的pdf文件。+ T+ w( V- h1 B& ?; J N) F% N0 T
- }( T# d9 q( p$ [, a
- returnMap.put("status", "true");7 m1 J7 [. a/ D: n- ~* V
- returnMap.put("swfFileName", swfFileSavePath.substring(swfFileSavePath.lastIndexOf("/")+1));//便于获取转换后swf文件的名字1 C4 A$ b" A6 D2 U: ]! V; S
- } catch (IOException e) {
. C+ {7 N! l5 @, C# {; ? - e.printStackTrace(); i/ q6 {3 j* T
- returnMap.put("status", "false");
5 W' {4 A' x6 C k' f0 a# S; U- W - }
6 I) T. L% q& k O& f5 i: Q+ u - return returnMap;: G2 X; G* E; E" J
- } else {
* c) Q; I/ c/ T. \ - System.out.println("****pdf不存在,无法转换****");: h1 e5 U1 {1 U, N' \+ b# b
- returnMap.put("status", "false");7 I4 z0 b: k. c
- return returnMap;$ J$ ~' F! n- f3 j/ u1 h4 ~
- }
: q% ~$ c' e) M, Z5 _% Y0 ^ - }
复制代码
( o1 d! f5 u* y" d& w+ M' u6 v四:运行项目测试项目前 请先运行安装好的OpenOffice、swftools
7 t' P$ @1 q0 s测试页面:
- k- K% w% d5 W% n
% i3 v& V$ F1 G
) ^/ w& u$ ^" c M, o9 R2 j% w( c# K- x: ?8 M/ x9 W. }
( J8 I4 D% V; x8 I( t
?( U, P w* _
: F i9 X! O. R' Q K4 Y+ E& T6 l. S
源码下载地址:点击下载' [4 a- ~- J8 D! ^3 w9 J
0 f9 J e2 M" Z! n2 I/ X7 U
/ w- x' [ T v- _3 H" c" t7 ^
软件下载地址:点击下载1 o& ~) M, I& A# b2 O" j1 R2 R ?
: x. U2 j* _$ ?+ D5 M) d; h
) F* w$ i9 w- E
|
|