科帮网

登录/注册
您现在的位置:论坛 盖世程序员(我猜到了开头 却没有猜到结局) 项目源码 > java仿百度文库实现文档在线预览项目源码
总共48087条微博

动态微博

查看: 5246|回复: 3

java仿百度文库实现文档在线预览项目源码

[复制链接]
admin    

1244

主题

544

听众

1万

金钱

管理员

  • TA的每日心情

    2021-2-2 11:21
  • 签到天数: 36 天

    [LV.5]常住居民I

    管理员

    跳转到指定楼层
    楼主
    发表于 2014-11-12 08:36:26 |只看该作者 |倒序浏览
    一:测试平台 win7 64位系统
    , P) ~- I0 Q) k' `+ ^3 q$ |二:准备软件 OpenOffice、swftools
    + g6 z4 \' [( X( xOpenOffice 下载地址:http://www.openoffice.org/download/index.html
    & Q( Q8 I, S0 B) ^7 p$ [: |9 nswftools下载地址:http://www.swftools.org/download.html
    ! A+ T8 k% e5 s' `5 Q+ p三:测试代码
    9 R6 L7 D5 E( q6 U# H( ^0 I1、conf.properties 软软件路径配置
    0 O$ s6 y% M4 b8 ?; v
    1. OpenOffice_HOME = C:/Program Files (x86)/OpenOffice 43 @$ ?* e) C: z/ Q0 h7 F- m
    2. 1 b* R* ?! U6 a9 b6 u$ {2 d: Z, E
    3. SWFTools_HOME = D:/SWF/SWFTools
    复制代码
    第一行 是OpenOffice  的安装路径 安装的时候请记住。
    ! y+ C7 r" j9 g* \6 V第二行 是swftools的安装路径。/ C" h! g- h! L/ F% A# C' P
    你可以自定义安装路径最好放到一起、便于管理。0 d: \9 U% Y3 E0 g5 K
    2、文档转换
    3 L! P9 t5 O" ?7 e: ?" M1 s
    1. /**
      # Y  ~+ }4 j- I0 Q" j
    2.          * 将odt、doc、docx、ppt或pptx格式的文件转换为pdf文件,如果文件后缀是pdf,则直接返回true。
      2 P* k8 n- {# ]7 v: S5 S* M! {/ Y# e: i
    3.          * 3 g& [0 w) S- g
    4.          * fileSuffix 文件的后缀。5 e* m; B5 V# Z, p1 h( f3 z& y* C7 X
    5.          */1 M+ K1 _  n! J* Y" K+ d  l0 A
    6.         private boolean converToPdf(String sourceFilePath, String pdfFileSavePath){. y7 R& W( @3 t1 |
    7.                 File sourceFile = new File(sourceFilePath);* x, C6 K; J+ s' N
    8.                 if (sourceFile.exists()) {( u$ ?1 H  `+ k+ I/ x
    9.                         String OpenOffice_HOME = ConfProperties.getOpenOfficeHome();//OpenOffice的安装根目录
      + }, `3 k) {+ C! v! j
    10.                 String command = OpenOffice_HOME + "/program/soffice.exe -headless -accept="socket,host=127.0.0.1,port=8100;urp;"";
      8 V9 q8 W; j0 F2 x& @
    11.                 System.out.println("command"+command);
      0 Z( k# n' q. L3 w
    12.                 try {
      , w3 o# y: a$ w- n% X8 q
    13.                         Process process = Runtime.getRuntime().exec(command);//启动OpenOffice的服务5 j8 p# q8 M( f" w' [* c
    14.                             OpenOfficeConnection connection = new SocketOpenOfficeConnection("127.0.0.1", 8100);) }2 U; M4 c3 Y
    15.                                 connection.connect();5 _. [: i' ]' i3 P
    16.                                 if(connection.isConnected()){//如果连接成功
      - C& l5 r& Q, @
    17.                                         DocumentConverter converter = new OpenOfficeDocumentConverter(connection);* U" }- b! E: f- l* g$ Q4 Z
    18.                                         converter.convert(sourceFile, new File(pdfFileSavePath));
      6 e1 X, n4 X/ K* p& g* M* F2 V
    19.                                         connection.disconnect();// close the connection* I! ~! g9 W8 z. U& o
    20.                                         process.destroy();// 封闭OpenOffice服务的进程
      $ Q; ?8 U, X4 s
    21.                                         System.out.println("****pdf转换成功,PDF输出:" + pdfFileSavePath+ "****"); 2 ~3 W7 _. P$ [& |; C5 @5 i
    22.                                         return true;; C5 R5 f' y# v% W% e, W3 T
    23.                                 }else{
      7 r# L% m' b# Z2 J, i3 b
    24.                                         return false;//swf转换器异常,openoffice连接失败!9 W" ?3 ]# u& a+ M
    25.                                 }
      - H# q6 L. Q) }& J$ Z4 }8 ?
    26.                         } catch (ConnectException e) {
      - i( A* P0 y6 Q% V
    27.                                 e.printStackTrace();
      9 A) t6 [; g( ]9 ]
    28.                                 System.out.println("****swf转换器异常,openoffice服务未启动!****");! b& Q) x) q8 R$ Y
    29.                                 return false;0 X0 y7 N' g* b  [0 ~% o
    30.                         } catch (OpenOfficeException e) {
      # C; `+ a, F# m+ v) H( R
    31.                                 e.printStackTrace();' Z. F+ ], B! T/ y1 P- R4 l1 w
    32.                                 System.out.println("****swf转换器异常,读取转换文件失败****");8 H. ^# J$ ?* j4 ^: |+ N
    33.                                 return false;' U9 a' T/ D' U" {  l7 c6 s2 e
    34.                         } catch (Exception e) {, c8 @& P; N- y1 A6 Z& `
    35.                                 e.printStackTrace();
      1 a+ ]5 \9 D3 n" f) N5 I
    36.                                 return false;
      / {9 g: A6 S* I( V
    37.                         }4 |4 y! s( G+ c' t* ^+ t  @
    38.                 } else {
      % X% L4 t. D) _" O. h5 D% s
    39.                         System.out.println("****swf转换器异常,需要转换的文档不存在,无法转换****");
      5 p0 e0 h* ?. u; v6 [- w: S. }
    40.                         return false;, ~% ?1 ?" C8 P9 c
    41.                 }. m: r# h$ k& A, c
    42.         }
    复制代码
    将pdf文件转换为swf文件:
    9 @) z) k4 w  I9 U' k# C
    1. /**
      3 F% t% T+ J/ ]9 s  C$ E; ^9 N
    2.          * 将pdf文件转换为swf文件。0 N6 M  G- B' ?8 e7 H4 f6 E
    3.          *2 y  n9 L+ E" P
    4.          * @author ghj
      ( j* K1 s1 F. s# w
    5.          */$ f8 \$ B5 ~% _  g; P
    6.         private Map<String, String> converFromPdfToSwf(String pdfFilePath,String swfFileSavePath){
      . T6 N. c1 S1 {' A5 @1 `% J* i
    7.                 String OS = System.getProperty("os.name").toLowerCase();  & {0 @1 w" [# t) O. c
    8.                 Map<String, String> returnMap = new HashMap<String, String>();: a! N9 h1 v! x/ k- D
    9.                 File pdfFile = new File(pdfFilePath);
      1 i+ N  F4 j& F2 J
    10.                 Runtime r = Runtime.getRuntime();
      . N& _" ?/ W8 h; [) h
    11.                 if (pdfFile.exists()) {
      $ T& c0 x0 a; R2 R$ n
    12.                         String SWFTools_HOME = ConfProperties.getSWFToolsHome();// SWFTools的安装根目录
      7 F& ^3 ^# D4 E$ n% T' y
    13.                         try {
      8 _. J* c  n+ Q
    14.                                 if (OS.indexOf("windows")>=0) {// windows环境处理  j* A3 V! p0 L9 P  S
    15.                                         Process process = r.exec(SWFTools_HOME+"/pdf2swf.exe "+ pdfFilePath + " -s flashversion=9 -o "+ swfFileSavePath);
        D* ~% S6 T: J' t
    16.                                         System.out.print(loadStream(process.getInputStream()));
      # x9 f% ^9 d! |
    17.                                         System.err.print(loadStream(process.getErrorStream()));$ B8 r' L6 J  L- B  q+ D
    18.                                         System.out.print(loadStream(process.getInputStream()));( Y* e3 Y( U& V+ I/ ^" N2 j* _! o0 c
    19.                                         System.err.println("****swf转换成功,文件输出:"+ swfFileSavePath + "****");
      8 D4 \% I1 C! |- e8 P2 b
    20.                                         process.destroy();// 销毁进程" @+ p# Y7 F5 D. {2 K- t7 v
    21.                                 } else if (OS.indexOf("linux")>=0) {// linux环境处理; j4 e! G% F" A+ @+ V
    22.                                         Process process = r.exec(SWFTools_HOME+"/pdf2swf "+ pdfFilePath + " -o " + swfFileSavePath + " -T 9");
      2 q1 e) L" ?7 g% O4 e8 D
    23.                                         System.out.print(loadStream(process.getInputStream()));
      ( g  s' \  Y4 J. d' `) M- c
    24.                                         System.err.print(loadStream(process.getErrorStream()));
      1 H$ W! t% t, n! z
    25.                                         System.err.println("****swf转换成功,文件输出:"+ swfFileSavePath + "****");
      - R9 M6 u* r8 i1 G7 M, Y6 t( p
    26.                                         process.destroy();// 销毁进程3 x* G( g" S! X
    27.                                 }3 G) h9 [( P: u7 D8 J2 `3 C4 @4 n
    28.                                 if (pdfFile.exists()) {9 ~! Y# l- T1 J- ?6 {& r
    29.                                         pdfFile.delete();//转换成功以后删除上传的pdf文件和转换的pdf文件。  s, B6 R$ |9 K* a) o4 `
    30.                                 }' c& T- y2 k" _/ m7 t' J; N) P
    31.                                 returnMap.put("status", "true");' m$ o& U! e! A  {% ^+ K1 R. k
    32.                     returnMap.put("swfFileName", swfFileSavePath.substring(swfFileSavePath.lastIndexOf("/")+1));//便于获取转换后swf文件的名字# R/ o, v& c3 ?% u6 n
    33.                         } catch (IOException e) {$ h6 t( g/ n7 o8 @* g% K5 t
    34.                                 e.printStackTrace();4 Y' k! r- ]! a6 l* x6 B/ j: h
    35.                                 returnMap.put("status", "false");
      " h1 `4 `5 X, U
    36.                         }$ j4 r: @; ^( J0 f1 o4 D0 N
    37.                         return returnMap;
      7 F+ p9 Y, v9 N& j2 \
    38.                 } else {8 h+ G5 O# A: C
    39.                         System.out.println("****pdf不存在,无法转换****");
      : W2 [6 d; f( O+ w0 D7 p  j
    40.                         returnMap.put("status", "false");9 K, }6 |. P/ T0 T1 o% N  \
    41.                         return returnMap;8 Q+ @1 Q2 Y% I7 h% K/ N7 W- U
    42.                 }
      - j" [( _2 \6 \+ m% o7 n; O
    43.         }
    复制代码

    5 U& e* q8 I: k3 }四:运行项目测试项目前 请先运行安装好的OpenOffice、swftools2 n, d1 R2 I0 H$ y, q* s
    测试页面:$ D/ t. q* K# a* _: W" h
    , S) }3 C; w( J7 J1 U: w

    3 U/ i' m" L2 x5 w3 t0 |! ?- Z+ i, m3 E! [9 K" u

    9 ~" Y+ ]4 `4 X- w: F! W0 } 5 W( S, k- u8 c; f. N- e8 S

    : Y* j- V, W' F: Y3 e% l" U1 [

    , D. l5 J3 t2 Z5 v2 d+ c: Q2 N# E源码下载地址:点击下载
    " _6 |7 Q, P2 c/ I& t: B7 y; W. B& R1 h5 x' W& m

    6 E% l4 e% K1 |( |% D软件下载地址:点击下载8 b. r8 [! ?3 A' t
    + ^# }( i: W! ~, C' X2 R0 j

    " m; Y" H5 p" i  e

    科帮网 1、本主题所有言论和图片纯属会员个人意见,与本社区立场无关
    2、本站所有主题由该帖子作者发表,该帖子作者与科帮网享有帖子相关版权
    3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和科帮网的同意
    4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
    5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    7、科帮网管理员和版主有权不事先通知发贴者而删除本文


    JAVA爱好者①群:JAVA爱好者① JAVA爱好者②群:JAVA爱好者② JAVA爱好者③ : JAVA爱好者③

    woniu 实名认证   

    2

    主题

    0

    听众

    330

    金钱

    四袋长老

    该用户从未签到

    沙发
    发表于 2016-04-12 12:18:08 |只看该作者
    这个项目太棒勒!下下来学习下!
    回复

    使用道具 举报

    2

    主题

    0

    听众

    289

    金钱

    五袋长老

    该用户从未签到

    板凳
    发表于 2016-05-05 15:39:04 |只看该作者
    感谢分享   ,
    回复

    使用道具 举报

    2

    主题

    0

    听众

    70

    金钱

    二袋弟子

    该用户从未签到

    地板
    发表于 2017-01-06 16:50:11 |只看该作者
    感谢分享,mark~
    回复

    使用道具 举报

    快速回复
    您需要登录后才可以回帖 登录 | 立即注册

       

    关闭

    站长推荐上一条 /1 下一条

    发布主题 快速回复 返回列表 联系我们 官方QQ群 科帮网手机客户端
    快速回复 返回顶部 返回列表