`
Jun_J90
  • 浏览: 2246 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

flexpaper仿百度文库实现在线阅读

阅读更多

准备工作

下载openoffice:

http://www.openoffice.org/download/index.html

下载swftools:

http://www.swftools.org/download.html 

 

只用到pdf2swf.exe

  以上安装文件要注意一点:安装目录避免带有空格

  用openoffice将office文档生成pdf

  /**

* office文档转pdf文件

* @param sourceFileoffice文档绝对路径

* @param destFilepdf文件绝对路径

* @return

*/

private int office2PDF(String sourceFile, String destFile) {

ResourceBundle rb = ResourceBundle.getBundle("OpenOfficeService");

String OpenOffice_HOME = rb.getString("OO_HOME");

String host_Str = rb.getString("oo_host");

String port_Str = rb.getString("oo_port");

try {

File inputFile = new File(sourceFile);

if (!inputFile.exists()) {

return -1; // 找不到源文件 

}

// 如果目标路径不存在, 则新建该路径  

File outputFile = new File(destFile);

if (!outputFile.getParentFile().exists()) {

outputFile.getParentFile().mkdirs();

}

// 启动OpenOffice的服务  

String command = OpenOffice_HOME

+ "/program/soffice.exe -headless -accept=\"socket,host="

+ host_Str + ",port=" + port_Str + ";urp;-nofirststartwizard &\"";

System.out.println("###\n" + command);

Process pro = Runtime.getRuntime().exec(command);

// 连接openoffice服务

OpenOfficeConnection connection = new SocketOpenOfficeConnection(

host_Str, Integer.parseInt(port_Str));

connection.connect();

// 转换 

DocumentConverter converter = new OpenOfficeDocumentConverter(

connection);

System.out.println("inputFile:" + inputFile);

System.out.println("outputFile:" + outputFile);

converter.convert(inputFile, outputFile);

 

// 关闭连接和服务

connection.disconnect();

pro.destroy();

 

return 0;

} catch (FileNotFoundException e) {

System.out.println("文件未找到!");

e.printStackTrace();

return -1;

} catch (ConnectException e) {

System.out.println("OpenOffice服务监听异常!");

e.printStackTrace();

boolean flag = true;

System.out.println("sourceFile------" + sourceFile);

File srcFile = new File(sourceFile);

if (!srcFile.exists()) {

return -1; // 找不到源文件 

}

System.out.println("<><><>" + srcFile.getName());

int fileLen = srcFile.getName().length();

String excPath = sourceFile.substring(0, sourceFile.length()-fileLen-1);

if(flag){

beginConvert(excPath,"",srcFile.getName());

flag = false;

}

} catch (IOException e) {

e.printStackTrace();

}

return 1;

}

  将pdf文件转换成swf文件

  private void convertPdf2Swf(String sourceFile, String outFile,

String toolFile) {

// -s languagedir=D:\\xpdf-chinese-simplified  用于处理pdf转换swf中文乱码问题

String command = toolFile + " \"" + sourceFile + "\" -o  \"" + outFile

+ "\" -s flashversion=9 -s languagedir=D:\\xpdf-chinese-simplified";

if("Linux".equals(props.getProperty("os.name"))){

command = "/usr/bin/pdf2swf" + " " + sourceFile + " -o  " + outFile

+ " -s flashversion=9 ";

}

System.out.println("<><><>" + command);

try {

Process process = Runtime.getRuntime().exec(command);

System.out.println("1--" + loadStream(process.getInputStream()));

System.err.println("2--" + loadStream(process.getErrorStream()));

System.out.println("3--" + loadStream(process.getInputStream()));

System.out.println("###--Msg: swf 转换成功");

} catch (Exception e) {

e.printStackTrace();

}

}

入口方法-通过此方法转换文件至swf格式

/**

* 入口方法-通过此方法转换文件至swf格式

* @param filePath上传文件所在文件夹的绝对路径

* @param dirPath文件夹名称

* @param fileName文件名称

* @return生成swf文件名

*/

public String beginConvert(String filePath, String dirName, String fileName) {

final String DOC = ".doc";

final String DOCX = ".docx";

final String XLS = ".xls";

final String XLSX = ".xlsx";

final String PDF = ".pdf";

final String SWF = ".swf";

final String TXT = ".txt";

final String ODT = ".odt";

final String PPT = ".ppt";

final String PPTX = ".pptx";

final String TOOL = "pdf2swf.exe";

String outFile = "";

String fileNameOnly = "";

String fileExt = "";

if (null != fileName && fileName.indexOf(".") > 0) {

int index = fileName.lastIndexOf(".");

fileNameOnly = fileName.substring(0, index);

fileExt = fileName.substring(index).toLowerCase();

}

String inputFile = filePath +File.separator+ fileName;

String outputFile = "";

String supportingFilePath = filePath +"(support)";

File file = new File(supportingFilePath);

if(!file.exists()){

file.mkdirs();

}

//如果是txt文档,先转为pdf文件

if(fileExt.equals(TXT)){

File docFile = new File(filePath +File.separator+ fileName);

File odtFile = new File(supportingFilePath +File.separator+fileNameOnly+ODT);

try {

FileUtil.copyFile(docFile, odtFile);

} catch (IOException e) {

e.printStackTrace();

}

inputFile = supportingFilePath +File.separator+fileNameOnly+ODT;

fileExt = ODT;

}

 

//如果是office文档,先转为odt文件

if (fileExt.equals(DOC) || fileExt.equals(DOCX) || fileExt.equals(XLS)

|| fileExt.equals(XLSX)|| fileExt.equals(ODT)|| fileExt.equals(PPT)

|| fileExt.equals(PPTX)) {

outputFile = supportingFilePath +File.separator+ fileNameOnly + PDF;

office2PDF(inputFile, outputFile);

inputFile = outputFile;

fileExt = PDF;

}

 

if (fileExt.equals(PDF)) {

String toolFile = propertyContext +"2/" + TOOL;

outputFile = supportingFilePath +File.separator+ fileNameOnly + SWF;

convertPdf2Swf(inputFile, outputFile, toolFile);

outFile = outputFile;

}

return outFile;

}

 

还有就是调用flexpaperviewer

var fp = new FlexPaperViewer(  

              'FlexPaperViewer',

              'viewerPlaceHolder', { config : {

              SwfFile :encodeURI('<%=basePath%>ueditor/jsp/<%=filePath%>'),

              Scale : 1,

              ZoomTransition : 'easeOut',

              ZoomTime : 0.5,

              ZoomInterval : 0.2,

              FitPageOnLoad : true,

              FitWidthOnLoad : true,

              PrintEnabled : false,

              FullScreenAsMaxWindow : true,

              ProgressiveLoading : true,

              MinZoomSize : 0.2,

              MaxZoomSize : 1,

              SearchMatchAll : true,

              InitViewMode : 'Portrait',

              PrintPaperAsBitmap : false,

              PrintToolsVisible : false,

              ViewModeToolsVisible : true,

              ZoomToolsVisible : false,

              NavToolsVisible : false,

              CursorToolsVisible : true,

              SearchToolsVisible : true,                        

              localeChain: 'zh_CN'

              

              }}); 

 

分享到:
评论

相关推荐

    flexpaper仿百度文库

    3. **仿百度文库的实现**: - **页面布局**:模拟百度文库的页面布局,包括文档展示区域、导航栏、搜索框等元素。 - **文档结构**:根据百度文库的文档分类和排序方式,搭建类似的目录结构。 - **权限管理**:...

    java FlexPaper实现仿百度文库、豆丁在线阅读

    java FlexPaper实现仿百度文库、豆丁在线阅读,里面负有代码与图片。资料。

    FlexPaper访百度文库

    在使用FlexPaper仿百度文库时,你需要具备一定的Adobe Flash Builder 4.5的开发经验。Flash Builder是一款集成开发环境(IDE),专为构建基于Flex和ActionScript的Flash应用程序而设计。在Flash Builder中,你可以...

    Java+FlexPaper+swfTools_仿百度文库文档在线预览系统设计与实现

    ### Java+FlexPaper+swfTools_仿百度文库文档在线预览系统设计与实现 #### 关键技术点概述 本文档将详细阐述一个模仿百度文库文档在线预览系统的实现过程,该系统通过结合Java、FlexPaper和swfTools等技术手段,...

    仿百度文库实现在线浏览文件功能

    仿百度文库实现在线浏览文件功能,使用open office、SWF tools、FlexPaper实现了在线浏览文件功能,项目主要功能:支持上传文件,支持新建文件夹,支持文件浏览,支持中文文件名(以MD5方式支持)

    java + openOffice + swfTools + flexpaper 实现的仿百度文库文档在线浏览(源码)

    鉴于网上找的在线浏览都略去了flexpaper ,于是自己花费几个小时完成了openOffice + swfTools + flexpaper 技术实现仿百度文库的在线浏览。功能已经实现,需要的自己下去优化一下,修改下openoffice和SWFTOOLS安装...

    Java+FlexPaper+swfTools仿百度文库文档在线预览系统设计与实现.docx

    根据提供的文档标题、描述、标签以及部分内容,本文将详细介绍如何使用Java、FlexPaper及swfTools来设计并实现一个类似于百度文库的文档在线预览系统。本系统旨在让用户能够在线预览各种类型的文档,无需下载或安装...

    FlexPaper java实现仿百度文库、豆丁在线阅读

    综上所述,"FlexPaper java实现仿百度文库、豆丁在线阅读"的项目涉及到了文件转换技术、字符编码处理、在线预览、源码定制以及Web安全等多个方面。通过这样的实现,用户可以在浏览器中方便地查看和浏览各种文档,...

    仿百度文库效果

    本篇文章将详细探讨如何实现“仿百度文库效果”,主要涉及FlexPaper Flash版和PDF2SWF工具的使用。 首先,我们要了解“百度文库”的核心功能。它是一个在线文档分享平台,支持用户上传各种格式的文档,并提供预览和...

    实现仿百度文库demo

    总的来说,实现仿百度文库的Demo需要整合OpenOffice进行文档格式转换,利用SWFTools进行PDF到SWF的转换,然后通过FlexPaper展示文档。这个过程涉及到服务器端的处理、前端的展示以及可能的后端接口设计。每个环节都...

    Java-FlexPaper-swfTools-仿百度文库文档在线预览系统设计与实现.docx

    Java-FlexPaper-swfTools-仿百度文库文档在线预览系统设计与实现 本文主要介绍了使用Java、FlexPaper和swfTools实现文档在线预览系统的设计和实现。该系统可以将上传的文档(包括ppt、word、excel、txt)转换为swf...

    Java仿百度文库,实现文件在线预览

    java仿百度文库、豆丁在线阅读,流程如下:Txt/Word/Excel/PPT=&gt;PDF(OpenOffice+JodConverter)=&gt;SWF(pdf2swf)=&gt;FlexPaper浏览,本人用过,很好用

    C# 仿百度文库实现方法

    在本文中,我们将深入...总结,实现“C#仿百度文库”需要掌握PDF处理、FlexPaper的集成、文件转换以及Web开发等相关技术。通过C#的编程能力,结合合适的库和工具,我们可以构建出一个功能完备的文档分享和查看平台。

    仿百度文库文档在线预览

    Java+FlexPaper+swfTools仿百度文库文档在线预览系统设计与实现

    借助OpenOffice、FlexPaper和SWFTools 实现仿百度文库的功能

    本工程为MyEclipse中的java web工程,它用于演示如何借助OpenOffice、FlexPaper和SWFTools 实现仿百度文库的功能。 本工程编码方式:UTF-8 对conf.properties文件的说明: #OpenOffice的安装根目录 OpenOffice_...

    Java+FlexPaper+swfTools仿百度文库文档在线预览系统设计与实现.pdf

    ### Java+FlexPaper+swfTools 仿百度文库文档在线预览系统设计与实现 本文将详细介绍如何使用Java结合FlexPaper和swfTools技术来实现一个类似百度文库的文档在线预览系统。该系统的主要功能是允许用户在线浏览各种...

Global site tag (gtag.js) - Google Analytics