TA的每日心情 衰 2021-2-2 11:21
签到天数: 36 天
[LV.5]常住居民I
一:测试平台 win7 64位系统 - W6 w. S" I g9 c; Y. f( G
二:准备软件 OpenOffice、swftools 7 A' X. J1 A8 q) {! H9 `" r
OpenOffice 下载地址:http://www.openoffice.org/download/index.html
( O4 b, }! i. A) V' O' C swftools下载地址:http://www.swftools.org/download.html ( b9 |0 G$ T J# H9 ^" H
三:测试代码 6 S: t- H+ s$ P# e& E; m
1、conf.properties 软软件路径配置
& Q* }) y7 U" `6 R( S9 K OpenOffice_HOME = C:/Program Files (x86)/OpenOffice 4
2 X4 V" g ]2 e. W( T8 s 9 @# R3 H( I* {% I, n, M
SWFTools_HOME = D:/SWF/SWFTools 复制代码 第一行 是OpenOffice 的安装路径 安装的时候请记住。& b" x0 `( p2 q+ a' h
第二行 是swftools的安装路径。! r6 m5 K/ c3 h! Q7 J* S, h4 U0 i
你可以自定义安装路径最好放到一起、便于管理。
! a+ k0 p) f( @; E5 o0 t 2、文档转换+ I- u c# Y2 ^- j" I
/**+ z7 r. P; J+ H* ~
* 将odt、doc、docx、ppt或pptx格式的文件转换为pdf文件,如果文件后缀是pdf,则直接返回true。( G9 E8 |4 P8 U9 h: G) p
*
# |6 q4 W g( I. `' R0 t/ L+ E * fileSuffix 文件的后缀。5 R3 M" n& q) _' K7 O% X0 n
*/
5 U0 R" {) K" y- n private boolean converToPdf(String sourceFilePath, String pdfFileSavePath){% O$ N/ m' y2 P; J6 Q
File sourceFile = new File(sourceFilePath);; c( [3 r m/ J) u9 j& N8 r
if (sourceFile.exists()) {! X: w( @# U. a7 Z0 J
String OpenOffice_HOME = ConfProperties.getOpenOfficeHome();//OpenOffice的安装根目录6 w4 |3 N# l9 u' c9 e! Y- x
String command = OpenOffice_HOME + "/program/soffice.exe -headless -accept="socket,host=127.0.0.1,port=8100;urp;"";
* H1 |" ` R } System.out.println("command"+command);9 w7 K" B1 m: `
try {, \" m% s/ A% E2 g: p
Process process = Runtime.getRuntime().exec(command);//启动OpenOffice的服务7 I0 |$ O7 D2 `6 w- ^, F# X
OpenOfficeConnection connection = new SocketOpenOfficeConnection("127.0.0.1", 8100);) Z* W! n/ l9 e0 Z+ `2 k
connection.connect();* S1 y) E) B& D4 e. [( s- O
if(connection.isConnected()){//如果连接成功
& c9 j7 l) R6 ^3 {4 f$ d2 T DocumentConverter converter = new OpenOfficeDocumentConverter(connection);. o3 G/ ?" V9 `/ W `
converter.convert(sourceFile, new File(pdfFileSavePath));9 n% l' s7 Z v/ z$ ^( v0 m) t! f
connection.disconnect();// close the connection
" ]4 u, |# }( ?" n* g D process.destroy();// 封闭OpenOffice服务的进程
2 i3 l0 M; b: d9 Z* K1 k2 J System.out.println("****pdf转换成功,PDF输出:" + pdfFileSavePath+ "****"); $ n, b) [8 D% i" e' j1 V8 o
return true;* a- c, d" [6 b L9 `; P2 Y
}else{* ?' ^8 k6 c/ J! C3 q: G
return false;//swf转换器异常,openoffice连接失败!' j' h, Z* D2 q9 }2 k [7 _
}, G' R3 k6 D ?3 d- w* p# q
} catch (ConnectException e) {# @0 H7 j% T3 [1 Y C
e.printStackTrace();8 O0 Z; d& f& G1 W8 v
System.out.println("****swf转换器异常,openoffice服务未启动!****");& b. C2 n9 @7 \7 `! @# x3 m
return false;# D) x. K9 R% a- L( R. g; K1 `
} catch (OpenOfficeException e) {
. C4 V, I8 ]: d' b e.printStackTrace();% ?! O7 Z* i3 {$ z7 ? K
System.out.println("****swf转换器异常,读取转换文件失败****");
& N" Z$ ~. _( r4 b. e7 O return false;
0 `3 J7 H4 h6 [* b' G; m } catch (Exception e) {- \1 L) T) o$ o H" L/ H) ~
e.printStackTrace();
' A! G, Y7 x& l! \0 X return false;
2 T4 c$ W1 t7 Q2 |9 M6 Z8 T7 k }
9 V1 V$ m# w9 e } else {
/ i& F" b" r! M# _4 J System.out.println("****swf转换器异常,需要转换的文档不存在,无法转换****");
5 @; K1 e) _' R2 ^' Y return false;
0 S1 D0 ~0 Y3 j$ h7 F }5 d2 f; T8 Z u, u# O
} 复制代码 将pdf文件转换为swf文件:
3 j' m+ o' i# H/ _$ `& @# C# v5 A /**
* \ ^! M- e t- ]/ N2 O * 将pdf文件转换为swf文件。7 }3 F& u h0 Y) z+ V& x, H
*' i4 j+ r3 T) k
* @author ghj
N. c; r6 _9 m" [; p- F */
Z2 n/ Y) o; j8 ~1 A private Map<String, String> converFromPdfToSwf(String pdfFilePath,String swfFileSavePath){
5 T# C# l5 g! B) W7 z! ] String OS = System.getProperty("os.name").toLowerCase();
6 ^8 V3 A' I8 ^ A7 m) h* K Map<String, String> returnMap = new HashMap<String, String>();
4 k1 l9 \: R8 t' [, W File pdfFile = new File(pdfFilePath);& `3 Q! V0 j# e
Runtime r = Runtime.getRuntime();
( V. z: i F! A- W' g' V if (pdfFile.exists()) {# ?) x, ~3 Y$ T3 _9 f- S4 p
String SWFTools_HOME = ConfProperties.getSWFToolsHome();// SWFTools的安装根目录
* H3 r, s2 x$ Z% g: W& J. G try {$ j+ ~: A+ V$ G4 S; b
if (OS.indexOf("windows")>=0) {// windows环境处理
- x8 _7 w) H1 }3 f- D. J Process process = r.exec(SWFTools_HOME+"/pdf2swf.exe "+ pdfFilePath + " -s flashversion=9 -o "+ swfFileSavePath);. ~# A' N6 t! ?: _3 G
System.out.print(loadStream(process.getInputStream()));; B4 \! E3 |9 ]8 M3 y+ F" Z
System.err.print(loadStream(process.getErrorStream()));
4 \ U+ M6 N- }1 O; f5 z System.out.print(loadStream(process.getInputStream()));
% Q7 c6 H; A1 H# o9 |' |0 I System.err.println("****swf转换成功,文件输出:"+ swfFileSavePath + "****");
9 u. Y; R. o( [7 m process.destroy();// 销毁进程
9 U$ A* Q& I, [0 S6 M! a } else if (OS.indexOf("linux")>=0) {// linux环境处理
2 i3 L- R; c; D( W) T* h' ` | Process process = r.exec(SWFTools_HOME+"/pdf2swf "+ pdfFilePath + " -o " + swfFileSavePath + " -T 9");0 U2 {1 d3 Z+ Y3 e
System.out.print(loadStream(process.getInputStream()));4 ]3 }/ f9 x; U! ~
System.err.print(loadStream(process.getErrorStream()));& m3 ?0 v" B/ [1 G" j- Q4 G9 U
System.err.println("****swf转换成功,文件输出:"+ swfFileSavePath + "****");9 y: Q+ K1 ^% S4 U5 H6 ]) q
process.destroy();// 销毁进程$ C4 P, z! d: o7 t" S
}) O) O. \0 a5 ^0 _( J/ m7 H
if (pdfFile.exists()) {
* x- m) b* x/ q' x pdfFile.delete();//转换成功以后删除上传的pdf文件和转换的pdf文件。
2 e& b5 Z$ j$ j5 L' c( c }, R9 E+ h3 ]) W( n# k v2 c- l
returnMap.put("status", "true");' B4 e6 B. L9 j$ Z. X* q6 s/ V
returnMap.put("swfFileName", swfFileSavePath.substring(swfFileSavePath.lastIndexOf("/")+1));//便于获取转换后swf文件的名字: O" \2 M% k+ ^7 V
} catch (IOException e) {
9 z' H( q( Y8 C8 Z4 \9 x/ Z e.printStackTrace();: M* e4 d. j3 Z+ d) Y8 L
returnMap.put("status", "false");
2 B* Q+ h5 S/ ]* F- F# V }! N6 K4 E) B' m2 [ i
return returnMap;
6 e9 l1 [/ X. @& P. n } else {
) T$ ^$ v/ X; W M! o System.out.println("****pdf不存在,无法转换****");% I# k+ o. k% k8 m3 C1 J
returnMap.put("status", "false");
C' N; o& a( v return returnMap;
' E( \! s2 o+ q, u" }8 L% z! j, [+ { }
5 Z$ g) A; @0 G& [4 `7 ^- W3 d( L } 复制代码
$ s; @8 p9 X& C/ e2 s 四:运行项目 测试项目前 请先运行安装好的OpenOffice、swftools ( U+ E5 E" Z& {' Q; T3 Y9 W5 K
测试页面:
6 N6 S$ a/ p- p! D; H, {! j
0 R X+ W- \! l6 z' Q/ ^
+ s. Y$ a- d2 t C3 j/ Z9 j' B ) D0 T& w* r0 C, w
, U3 P' W. s: z2 W
' m2 Y" Y6 i! |- J8 T
6 K, N- H$ a: o3 q, l; F
, O( U s! n9 M3 }$ ]) o% _1 f
源码 下载地址:点击下载 4 x# G5 c5 U9 P5 k, M
S, l3 n) ]9 K; }! i% l
$ b" J5 a$ P2 R0 v% y, F 软件下载地址:点击下载 [; U1 Q; w$ w, D) k! l
3 @' v k; t+ S' M) c0 }3 G5 p
3 |0 d+ g# t# v2 w
科帮网-Java论坛、Java社区、JavaWeb毕业设计 1、本主题所有言论和图片纯属会员个人意见,与本社区立场无关2、本站所有主题由该帖子作者发表,该帖子作者与科帮网-Java论坛、Java社区、JavaWeb毕业设计 享有帖子相关版权3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和科帮网-Java论坛、Java社区、JavaWeb毕业设计 的同意4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意7、科帮网-Java论坛、Java社区、JavaWeb毕业设计 管理员和版主有权不事先通知发贴者而删除本文
JAVA爱好者①群:
JAVA爱好者②群:
JAVA爱好者③ :