准备工作
下载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'
}});
相关推荐
3. **仿百度文库的实现**: - **页面布局**:模拟百度文库的页面布局,包括文档展示区域、导航栏、搜索框等元素。 - **文档结构**:根据百度文库的文档分类和排序方式,搭建类似的目录结构。 - **权限管理**:...
java FlexPaper实现仿百度文库、豆丁在线阅读,里面负有代码与图片。资料。
在使用FlexPaper仿百度文库时,你需要具备一定的Adobe Flash Builder 4.5的开发经验。Flash Builder是一款集成开发环境(IDE),专为构建基于Flex和ActionScript的Flash应用程序而设计。在Flash Builder中,你可以...
### Java+FlexPaper+swfTools_仿百度文库文档在线预览系统设计与实现 #### 关键技术点概述 本文档将详细阐述一个模仿百度文库文档在线预览系统的实现过程,该系统通过结合Java、FlexPaper和swfTools等技术手段,...
仿百度文库实现在线浏览文件功能,使用open office、SWF tools、FlexPaper实现了在线浏览文件功能,项目主要功能:支持上传文件,支持新建文件夹,支持文件浏览,支持中文文件名(以MD5方式支持)
鉴于网上找的在线浏览都略去了flexpaper ,于是自己花费几个小时完成了openOffice + swfTools + flexpaper 技术实现仿百度文库的在线浏览。功能已经实现,需要的自己下去优化一下,修改下openoffice和SWFTOOLS安装...
根据提供的文档标题、描述、标签以及部分内容,本文将详细介绍如何使用Java、FlexPaper及swfTools来设计并实现一个类似于百度文库的文档在线预览系统。本系统旨在让用户能够在线预览各种类型的文档,无需下载或安装...
综上所述,"FlexPaper java实现仿百度文库、豆丁在线阅读"的项目涉及到了文件转换技术、字符编码处理、在线预览、源码定制以及Web安全等多个方面。通过这样的实现,用户可以在浏览器中方便地查看和浏览各种文档,...
本篇文章将详细探讨如何实现“仿百度文库效果”,主要涉及FlexPaper Flash版和PDF2SWF工具的使用。 首先,我们要了解“百度文库”的核心功能。它是一个在线文档分享平台,支持用户上传各种格式的文档,并提供预览和...
总的来说,实现仿百度文库的Demo需要整合OpenOffice进行文档格式转换,利用SWFTools进行PDF到SWF的转换,然后通过FlexPaper展示文档。这个过程涉及到服务器端的处理、前端的展示以及可能的后端接口设计。每个环节都...
Java-FlexPaper-swfTools-仿百度文库文档在线预览系统设计与实现 本文主要介绍了使用Java、FlexPaper和swfTools实现文档在线预览系统的设计和实现。该系统可以将上传的文档(包括ppt、word、excel、txt)转换为swf...
java仿百度文库、豆丁在线阅读,流程如下:Txt/Word/Excel/PPT=>PDF(OpenOffice+JodConverter)=>SWF(pdf2swf)=>FlexPaper浏览,本人用过,很好用
在本文中,我们将深入...总结,实现“C#仿百度文库”需要掌握PDF处理、FlexPaper的集成、文件转换以及Web开发等相关技术。通过C#的编程能力,结合合适的库和工具,我们可以构建出一个功能完备的文档分享和查看平台。
Java+FlexPaper+swfTools仿百度文库文档在线预览系统设计与实现
本工程为MyEclipse中的java web工程,它用于演示如何借助OpenOffice、FlexPaper和SWFTools 实现仿百度文库的功能。 本工程编码方式:UTF-8 对conf.properties文件的说明: #OpenOffice的安装根目录 OpenOffice_...
### Java+FlexPaper+swfTools 仿百度文库文档在线预览系统设计与实现 本文将详细介绍如何使用Java结合FlexPaper和swfTools技术来实现一个类似百度文库的文档在线预览系统。该系统的主要功能是允许用户在线浏览各种...