为什么要做文件格式转换服务器
不知道各位是否遇到这样的情况, 当您在浏览IBM SUN等公司的技术网站的时候, 你会发现在每个页面的上方有小图标, 你可以把当前的页面内容以word, pdf或者是其他的格式进行下载, 可能你在想, 恩, 大公司的做法确实很正规, 他们提供了许多的格式版本提供不同的用户下载, 我想你可能是对的, 但是我们换一种想法假设我们构建一个服务器, 让所有的格式可以自由地转换成我们所希望地格式:
假设我们的Java代码是这样写的
Public static FileTransfer{
Public static convert(File inputFile ,File outputFile){
………
}
}
|
那么我们可以在Jsp Servlet里面调用这个静态方法, 实现文档的格式的转换。
2. 怎么实现
好了, 设计思想有了, 怎么实现呢, 好在Java有大量的开源社区,而且我们有google , 不出一分钟, 我们可以从互联网找到答案:
这个是一个利用Openoffice来实现的解决方案, 他已经帮忙做好了整个解决方案。
JODConverter是这个项目的子项,用Java语言来实现:
n Microsoft Office 转换成OpenDocument和viceversa
n Word 格式转换成 OpenDocument Text (odt);
n OpenDocument Text (odt) 转换成 Word
n Excel转换成OpenDocument Spreadsheet (ods);
n OpenDocument Spreadsheet (ods) 转换成Excel
n PowerPoint转换成OpenDocument Presentation (odp);
n OpenDocument Presentation (odp) 转换成PowerPoint
n 任何格式转换成 PDF
n OpenDocument (Text, Spreadsheet, Presentation) 转换成PDF
n Word to PDF; Excel转换成PDF; PowerPoint转换成PDF
n RTF转换成PDF; WordPerfect转换成PDF; ...
n 还有:
n OpenDocument Presentation (ods) 转换成Flash;
n PowerPoint转换成Flash
n RTF转换成OpenDocument; WordPerfect转换成OpenDocument
n 任何格式转化成 HTML (with limitations)
n Support for OpenOffice.org 1.0 and old StarOffice formats
3. 部署服务
这个文档假设你已经安装了OpenOffice在操作系统上, 在windows上安装OpenOffice是非常简单和愉快的事情, 在linux/unix下面, OpenOffice网站提供的下载包是Tar.gz格式, 用
Gunzip –c **.tar.gz
Tar –xf *.tar
Pkgadd -d /your path/OOo/packages
命令就可以安装
为了方便使用我按照不同的操作系统来编写
3.1. Windows 2k xp 2003 server
2. 利用Srvany.exe创建一个服务, 如OpenOfficeUnoServer
在注册表项 :
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\OpenOfficeUnoServer
创建子项: Parameters
在parameters下面 创建字符串值 Application 和 AppParameters,
分别设置值为
C:\Program Files\OpenOffice.org 2.2\program\soffice.exe
-accept=socket,host=0.0.0.0,port=8100;urp; -headless
其中soffice.exe的路径根据您安装的路径来修改
在Control Panel / Administrative Tools / Services 打开该服务, 修改属性 Log On account 为 Local Service
3. 修改您安装OpenOffice路径下的share\registry\data\org\openoffice\Setup.xcu文件
找到:
<prop oor:name="ooSetupInstCompleted">
<value>false</value>
</prop>
<prop oor:name="ooSetupShowIntro">
<value>true</value>
</prop>
|
修改成
<prop oor:name="ooSetupInstCompleted" oor:type="xs:boolean">
<value>true</value>
</prop>
<prop oor:name="LicenseAcceptDate" oor:type="xs:string">
<value>2006-07-25T17:34:04</value>
</prop>
<prop oor:name="FirstStartWizardCompleted" oor:type="xs:boolean">
<value>true</value>
</prop>
|
4. 从开始, 程序里面启动一次OpenOffice 将注册选项设置成不注册
5. 启动OpenOfficeUnoServer服务
6. 查看是否服务已经存在telnet 127.0.0.1 8100
3.2. Linux / Unix
Linux和Unix创建服务相对简单, 但是由于soffice需要使用到Xwindow界面, 所以在做服务的时候, 由于在命令行状态, 没有图形界面的支持, 所以需要使用Xvfb来设置一个虚拟的界面。
在soffice.bin目录创建一个ooService文件
# touch ooService
# vi ./ooService
将以下内容写入这个文件
#!/sbin/sh
case "$1" in
start)
DISPLAY=:5.0
export DISPLAY
/usr/openwin/bin/Xvfb :5 screen 1024x768x24 &
/usr/opt/openoffice.org2.2/program/soffice.bin -headless -display:5 -accept="socket,host=0.0.0.0,port=8100;urp;" &
;;
stop)
pkill soffice
;;
*)
echo "Usage: $0 { start | stop }"
exit 1
;;
esac
exit 0
|
以上代码在solaris 10下面测试通过, 其他的版本, 根据Xvfb的版本不一 , 进行调整参数即可:/usr/openwin/bin/Xvfb :5 screen 1024x768x24 &
# chmod a+x ./ooService
在/etc/rc3.d 或者init.d里面创建一个文件 S90ooService
# touch S90ooService
# vi S90ooService
将里面的内容改成
#!/sbin/sh
/usr/opt/openoffice.org2.2/program/ooservice start
|
#chmod a+x ./S90ooService
4. 使用实例
实例代码如下
<%@ page import="java.io.File"%>
<%@ page import="com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection"%>
<%@ page import="com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection"%>
<%@ page import="com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter"%>
<%@ page import="com.artofsolving.jodconverter.DocumentConverter"%>
<%--
Created by IntelliJ IDEA.
User: Henry
Date: 2007-7-27
Time: 15:30:43
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
File inputFile = new File("c://temp//111.ppt");
File outputFile = new File("c://temp//111.html");
// 链接 一个运行在8100端口的OpenOffice.org 实例
OpenOfficeConnection connection = new SocketOpenOfficeConnection(8100);
connection.connect();
// 创建一个converter对象并转换格式
DocumentConverter converter = new OpenOfficeDocumentConverter(connection);
converter.convert(inputFile, outputFile);
// 关闭连接
connection.disconnect();
%>
<html>
<head><title>Simple jsp page</title></head>
<body>Place your content here</body>
</html>
5. 扩展使用
在上述代码里, 使用onverter.convert(inputStream , DocumentFormat, outputStream , DocumentFormat);方法, 可以直接将servlet的outwriter对象作为输出流, 既可以实现在serverlet里面转换文件了。
关于作者
OldJavaMan,长期致力于Java相关领域的技术工作, 主要参与J2EE相关程序的设计, 目前在南京的一家软件企业就职,他希望和广大的Java爱好者结交朋友。大家可以通过
mail联系他 。
分享到:
相关推荐
总的来说,通过结合使用Java的JAVE库进行文件格式转换,FTP协议进行文件传输,以及Base64编码进行数据的网络传输,你可以构建一个功能齐全的文件格式转换系统。这个系统不仅可以处理AMR到MP3的转换,还能扩展到处理...
总之,"文档工具_-_多种文件格式转换处理的工具软件.zip" 提供的PHP源码是处理文件格式转换的强大工具,能够极大地提升开发者的效率,特别是在处理大量文件转换需求的项目中。通过深入研究和定制这些源码,开发者...
4. **存储转换后的文件**:转换完成后,将生成的FLV文件保存在服务器的指定位置,以便后续的Web应用程序访问和播放。 5. **错误处理**:在整个过程中,要确保有适当的错误处理机制,如捕获异常、检查返回值等,以...
3. **转换过程**:在转换过程中,软件会解析PDF中的文字、图像、表格和页面布局,然后在Word文档中重新构建这些元素。由于PDF和Word的结构差异,转换后的文档可能需要微调以恢复原始布局。 4. **编辑Word文档**:...
文件转换的具体实现取决于你需要将文件转换为什么格式。对于某些格式,可能有现成的PHP库可用,例如使用`dompdf`库将HTML转换为PDF。如果需要自定义转换逻辑,可能需要读取源文件的内容,然后根据目标格式的要求创建...
意味着这个程序支持多种类型的文件上传,对于图片,它可能有特定的处理逻辑,如缩放、格式转换等,而对于普通文件,处理可能相对简单,仅需确保文件安全无误地存储在服务器上。 标签中的“文件上传到服务器,图片...
文件内容可以通过读取文件流并将其转换为`StreamContent`来创建。同时,别忘了添加服务器地址和所需的其他参数,如文件名。 上传过程中,为了显示进度和网速,我们可以监听HTTP请求的进度事件。`HttpClient`提供了`...
"POI和ASPOSE文件转换在线预览"这个主题涉及到两个关键的Java库:Apache POI和Aspose,它们都是用于处理Microsoft Office文件的强大工具。本文将深入探讨这两个库的功能、用法以及如何利用它们实现文件格式转换并...
### WinForm上传文件到服务器 #### 知识点概述 ...此功能对于构建文件管理、文件共享等应用具有重要意义。理解并掌握这些基本原理和技术细节,有助于开发者更好地开发出高效稳定的文件上传功能。
或者在构建一个网络服务,需要将接收到的不同格式的图片上传到服务器并转换为统一格式,那么这个库同样能派上用场。 易语言多种图像格式转换支持库源码的开放,对于学习易语言和图像处理技术的开发者来说是一大福音...
2. **转换需求**:在QQ聊天程序中,用户可能会发送AMR格式的语音消息,但接收方的设备或应用可能不支持这种格式,这就需要将AMR文件转换为更通用的格式,如MP3、WAV或AAC。 3. **转换原理**:AMR到其他格式的转换...
这个过程通常需要一个文件转换引擎,它能够理解源文件的格式,并按照目标格式的要求重新构建文件。对于Java开发者,可以使用Apache POI、iText、PDFBox等开源库来处理Office文档和PDF。对于视频和音频转换,FFmpeg是...
标题和描述中提到的"实现word文件转换成html文件实现在线打开预览word文件",这是一个关于将Microsoft Word文档转换为HTML格式,以便在网页上预览的技术问题。下面将详细介绍这个过程涉及的关键知识点。 1. **...
综上所述,"1G大文件视频上传,多种格式转换成flv,多图片截图"是一个综合性的任务,涉及到前端交互、后端处理、多媒体技术、文件安全和性能优化等多个方面,需要开发者具备全面的ASP.NET和相关技术知识。...
在现代网络应用中,有时我们需要将Flash(SWF)格式的文件转换为静态图像,以便于在不支持Flash的设备或环境中预览。这个项目是利用C#编程语言和ASP.NET框架来实现的,它提供了一个在线解决方案,可以将SWF动画转化...
2. **文件转换**:转换文件通常涉及到将一种文件格式转换为另一种。对于ASP,可以调用OpenOffice或LibreOffice的命令行工具,通过系统进程来执行转换任务。例如,你可以将Word文档转换为PDF,或者将Excel文件转换为...
在构建文件服务器模型时,这些API接口起到了至关重要的作用。例如,Socket接口用于创建和管理网络连接,共享内存函数用于设置和访问共享内存区域,消息传递函数用于在进程间传递消息。 通过这样的模型,初学者能够...
- 图像格式转换库可以用于用户上传图像时,将其自动转换为服务器能够处理的标准格式,优化存储和处理效率。 - 扩展界面库则用于构建美观、响应式的用户界面,使用户在申请邮箱过程中能有更好的交互体验,比如使用...
本篇文章将深入探讨如何使用Java技术栈,特别是Apache POI和iTextPDF库,来实现doc、xls(包括旧版的Excel 2003和新版本的Excel 2007+)以及txt、图片等多种格式的文件转换为PDF,并且实现在线浏览的功能。...
- 使用`db_load`将文本文件转换为数据库文件,例如`/etc/vsftpd/userdb.db`。 3. **创建FTP访问的根目录及虚拟用户对应的系统账号**: - 为每个虚拟用户(如devadm、sales、saleadm)创建相应的系统用户和主目录...