为什么要做文件格式转换服务器
不知道各位是否遇到这样的情况, 当您在浏览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联系他 。
分享到:
相关推荐
服务器虚拟化在校园中的构建全文共5页,当前为第1页。服务器虚拟化在校园中的构建全文共5页,当前为第1页。服务器虚拟化在校园中的构建 服务器虚拟化在校园中的构建全文共5页,当前为第1页。 服务器虚拟化在校园中的...
在查看结构之后,我构建了一个解析器来将文件转换为 Chrome 乐于导入的 .html 格式。 如何跑步 将 convertor.php 添加到服务器。 将您的 .bak 文件上传为 bookmarks.txt(或在脚本中重命名以匹配)。 运行脚本。 ...
IOCP模型是Windows服务器开发中性能最好的非阻塞异步IO模型,所以通信层采用IOCP模型构建。Windows下有五种非阻塞I/O模型:选择〔Select〕、异步选择〔WSAAsyncSelect〕、事件选择〔WSAEventSelect〕、重叠I/O〔...
科拉达转换器 加载 COLLADA 文件并将其转换为更适用于 WebGL 的格式。 用户界面 该转换器带有一个本地网页形式的简单用户界面。... 此转换器将此类文件转换为适合在 WebGL 引擎中加载的文档。 此转换分 4 个阶段执行
增加文件编码转换功能 4.修复linux下中文名不能显示的bug 5.修复zip文件改名造成显示错误bug 6.修复firefox和opera下的显示bug 7.修复index.html的bug 8.修复文件名0造成错误的bug 9.修复...
使用Javascript工具解析PDF文件并将其转换为Markdown格式。 在线版本位于 ! 主要变化 2017年4月-0.1:初始版本 有助于 使用和/或打开! 有用的构建命令 npm install下载所有必需的npm软件包 npm run lint Lint的...
引导文件定义模块,如何初始化和连接模块,并允许您从cli启动服务器。 有关更多信息,请参见 安装 从Pypi: $ easy_install metricfactory 从Github: $ git clone $ cd metricfactory $ python setup.py安装...
USDZconverter网站ui Web界面,可将3d内容转换为usdz格式目录关于该项目 Web服务旨在在本地网络上提供GUI,以将3d内容转换为usd / usdc / usda / usdz格式。 该应用程序添加了有用的默认值和一些服务器端场景后处理...
EasyPACS - Dicom 服务器EasyPACS 是最简单的 dicom 文件 PACS 服务器。 它使用 DCM4CHEE 侦听器并将 dicom 文件转换为 jpeg。 这是存储 dicom 文件的最简单方法。 详情: :
3.增加文件编码转换功能 4.修复linux下中文名不能显示的bug 5.修复zip文件改名造成显示错误bug 6.修复firefox和opera下的显示bug 7.修复index.html的bug 8.修复文件名0造成错误的bug 9.修复受限用户能够查看受限文件...
但是,我可以自由上传自己的笔迹,并构建了一个非常简单的实用程序,可以将任何.txt文件转换为我的手写PDF。 #工作方式: 该实用程序在服务器本身上执行python脚本。 服务器已根据说明将所有依赖项预先安装在...
nodejs webtool用于将图像转换为 Minecraft 地图项。 如何设置和运行自己的服务器 获取并安装nodejs 从此存储库下载文件 用于npm install获取依赖项 可选:运行测试npm test 运行构建过程npm run build 可选:将...
自动服务,将DICOM图像系列转换为Matlab文件格式,与多文件DICOM系列相比,该格式可以更方便地加载和管理。 包括用于从 Matlab 应用程序和用户手册中配置和启动服务器的 GUI。 该应用程序可以构建,然后作为 Matlab ...
pdf2json是一个模块,可将PDF从二进制格式转换为json格式,它是使用构建的,并通过交互式表单元素和文本内容解析器在浏览器外部进行扩展。 目标是当包装在Web服务中时,使服务器端PDF可以使用交互式表单元素进行...
一个简单的用户界面,可用于构建乳胶文件并使用pandoc对其进行转换。 入门 要运行服务器,可以使用以下命令: docker run -d -p 80:3000 --name latex-builder --restart always nimamahmoudi/latex-builder 如果...
REACT_APP_BACKEND_HOST = npm运行构建 在src / main / webapps / index.jsp中打开index.jsp 使用正确的新名称编辑css和js文件名。 编译UnicodeConverter.war 将UnicodeConverter.war重命名为ROOT.war 部署在...
Lust 是一个静态图像服务器,旨在自动将上传的图像转换为多种格式和预设大小,并考虑到缩放。Lust 通过任何给定的数据库后端存储图像:Redis / 密钥数据库卡桑德拉/ScyllaDBPostgreSQLMySQL/MariaDBSqlite(仅限文件...
将Dart转换为JS以在客户端使用。 处理REST请求。 从磁盘提供文件。 设置服务器 下载并安装 。 在本地克隆存储库$ git clone https://github.com/Diaga/shelf-dart.git 设定环境$ pub get $ npm i -g nodemon ...
此实用程序允许用户将用户定义的列分隔符插入以固定宽度格式给出的平面文件表的用户定义位置。 我正在使用此实用程序将在CDS ftp服务器上以平面表提供的天文目录导入到postgresql中。 构建:$ make all [cc = {icc ...
因此,当您的 CDN 请求图像时,它会从该工具请求图像,然后该工具从您的文件存储中获取原始图像,对其进行处理(调整大小、质量、格式转换等...),并将其发送回CDN。 现在,无论何时请求该图像,它都会简单地使用 ...