基于openoffice的office文件类型转换_转载
电脑文件格式转换技巧
电脑文件格式转换技巧在日常生活中,我们经常会遇到需要转换电脑文件格式的情况。
无论是为了适应不同的设备或软件,还是为了满足特定的需求,掌握一些电脑文件格式转换技巧将会非常有用。
本文将介绍一些常见的文件格式转换方法,帮助读者更好地处理电脑文件。
一、文档格式转换1. Word文档转PDFWord文档转换为PDF格式可以确保文件在不同设备上的可读性和一致性。
最简单的方法是使用Microsoft Office自带的保存功能,选择“另存为”时选择PDF格式即可。
此外,还可以使用在线转换工具或专业的PDF转换软件来实现。
2. PDF转Word文档有时候我们需要编辑或复制PDF文件中的内容,这时将其转换为Word文档会更方便。
可以使用Adobe Acrobat等专业软件,或者在线转换工具来实现这一转换。
3. 文本文件编码转换当我们打开一个文本文件时,有时会遇到乱码的情况。
这可能是因为文件的编码格式与当前使用的文本编辑器或浏览器不兼容。
这时,可以使用记事本等文本编辑器打开文件,选择“另存为”,并选择合适的编码格式来解决问题。
二、音频格式转换1. MP3转WAVMP3和WAV是常见的音频格式,它们在不同的场景中有各自的优势。
如果你需要将MP3文件转换为WAV格式,可以使用专业的音频转换软件,也可以使用在线转换工具来实现。
2. 音频剪辑和合并有时候我们需要对音频文件进行剪辑或合并,以满足特定的需求。
Audacity是一款功能强大的免费音频编辑软件,可以帮助我们实现这些操作。
通过Audacity,我们可以轻松地剪辑、合并、混音等。
三、视频格式转换1. 视频格式转换不同的设备和软件支持的视频格式可能不同,因此我们有时需要将视频文件转换为特定的格式。
有很多视频转换软件可以帮助我们实现这一目标,例如Format Factory、HandBrake等。
2. 视频剪辑和合并与音频文件类似,有时候我们也需要对视频文件进行剪辑和合并。
openoffice 转pdf java
将OpenOffice文档转换为PDF文件:使用Java进行操作在处理文档转换的过程中,我们常常需要将OpenOffice文档(如.odt,.ods等)转换为PDF格式。
尽管OpenOffice本身提供了命令行工具来实现这一功能,但在Java应用程序中直接使用这些工具可能并不是最理想的解决方案。
幸运的是,有一些Java库可以帮助我们完成这个任务。
Apache POI和PDFBox是两个非常强大的库,它们可以帮助我们处理各种文档格式。
然而,为了将OpenOffice文档转换为PDF,我们需要一个能够与OpenOffice交互的Java库。
这就是为什么我们需要用到unoconv。
unoconv是一个命令行工具,它可以用来将OpenOffice文档转换为其他格式,包括PDF。
unoconv有一个Java库接口,使我们能够在Java应用程序中直接使用它。
以下是如何在Java中使用unoconv将OpenOffice文档转换为PDF的示例:首先,你需要添加unoconv的依赖到你的项目中。
如果你使用Maven,你可以添加以下依赖到你的pom.xml文件中:然后,你可以使用以下代码将OpenOffice文档转换为PDF:这段代码首先创建一个Conv对象,然后使用Args对象设置转换参数。
在这个例子中,我们设置参数为将文件转换为PDF格式。
然后,我们调用convert方法来执行转换。
最后,我们关闭Conv对象以释放资源。
请注意,为了使这段代码正常工作,你的系统需要安装LibreOffice或OpenOffice,并且unoconv需要能够找到它们。
此外,你可能需要在你的系统路径中添加unoconv的路径。
Open Office办公软件简要使用说明
在右边下方的(文档类型)中点击下拉选项,选择(文本文档),然后在(自动类型)中再选择(电子表格),同样在(自动保存为)中选择与上面一样的选项。 第三,(文档类型)中再选择(演示文稿),在(自动保存为)中选择 Microsoft Powerpoint 97/2000/xp 选项。 最后,点击(确定)即可。 2、导出为 PDF PDF 能忠实 地再现 原稿的 一 个色以及 色 以 及 图 象 , 确 保 样 式 不 变 。将文档、 一个字符、 字 符 、颜 象,确保 式不 。 每 表格等转换成 PDF
(2)、电子表格的图形化功能界面
Open Office 办公软件简要使用说明
一、简介 Open Office 可以让您打开、 编辑、 创建 Word 文档、 Excel 表格、 演示文件。 PPT 您还可以将它们导 出为 PDF 格式。Open office 具备图形化功能界面,使用方法与 Windows office 差不多,具备常用 的编辑功能,能够满足公司基本办公操作需要。 在您使用 open office 创建文档时,请使用公司发布的标准模板,这样可以保持文件格式一致。 本简要使用说明经由 Open Office 创建。PDF 版本也从其导出生成。 二、软件打开方式 您可以在桌面(开始)界面中,选择(程序),并在(程序)中选择 open 。您在第一 次进入时,需要输入您的基本信息,根据提示操作,即可进入创建页面,选择(文本文档),或者 (电子表格),如图所示:
格式,在公司内所有安装了 PDF 阅读软件的电脑上可直接打开阅读。 OpenOffice 内置了制作 PDF 文件的功能。 导出为 PDF 的操作方法是:打开文档或表格,点击页面左上方(文件),选择(输出成 PDF)。 随后 弹出 PDF 设置选项,不必修改设置,直接点击(导出),在下一步的提示中选择您想把文件保存到的 位置。 3、图标功能按钮: 把鼠标移动到页面上方的各个图标上不动,既能显示该图标按钮的功能,如图所示。点击按钮 即可实现相应功能。 或者选择页面上方不同的下拉菜单,例如点击(文件),进行更多的功能选择。 (1)、文本文档的图形化功能界面
OpenOffice.org文件格式的分析和应用
发出的称为StarOffice 的一个办公室软件, 1999 年 8 月SUN 公司购 在 得。2000 年7 月, 套件的源码通过两种授权协议, 宽通用公共许 GNU
OpenO i 的前身是1998 年一家德国 ff 公司StarD ivision 所研
(2 )将模板文件解压缩到一个目录; (3)写php 程序处理; 模板制作时就像平常文件处理一样, 唯一不一样的就是要由php 程式替代的部份要用大括弧将变量扩起来, 如(var)o 处理的数据: $array=array(” 张三","1234567","123@""一二三四号” 呵 ’ , 呵\n 哈哈。” \ make paper ooo($array);
c on t i u e ; n
)else(
小。 1.0 版起, 从 存储文档的本地的文件格式开始基于OA OpenSIS
Document 的文件格式标准, 版时, 2.0 已经成为默认的文件格式。OASIS 是结构信息标准发展组织的缩写, 是控制OpenDocument 标准的
$data = $x- >read- f le($ooo- path."/".$file."/".$file2); i
)elseif(is一ir($ooo_path."/"I file))( if($file=二 , 'Configurations2") $f le_extname="odt"; i if ($dh2 = opendir($ooo_path."P'I file)) { while (($file2 = readdir($dh2)) ! =“false) { if($file2=="." or $f le2=="..")( i
java调用openoffice将office系列文档转换为PDF的示例方法
java调⽤openoffice将office系列⽂档转换为PDF的⽰例⽅法前导:发过程中经常会使⽤java将office系列⽂档转换为PDF,⼀般都使⽤微软提供的openoffice+jodconverter 实现转换⽂档。
openoffice既有windows版本也有linux版。
不⽤担⼼⽣产环境是linux系统。
1、openoffice依赖jar,以maven为例:<dependency><groupId>com.artofsolving</groupId><artifactId>jodconverter</artifactId><version>2.2.1</version></dependency><dependency><groupId>org.openoffice</groupId><artifactId>jurt</artifactId><version>3.0.1</version></dependency><dependency><groupId>org.openoffice</groupId><artifactId>ridl</artifactId><version>3.0.1</version></dependency><dependency><groupId>org.openoffice</groupId><artifactId>juh</artifactId><version>3.0.1</version></dependency><dependency><groupId>org.openoffice</groupId><artifactId>unoil</artifactId><version>3.0.1</version></dependency><!--jodconverter2.2.1必须依赖slf4j-jdk14必须这个版本,不然源码中⽇志会报错,很low的⼀个问题--><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-jdk14</artifactId><version>1.4.3</version></dependency>2、直接上转换代码,需要监听openoffice应⽤程序8100端⼝即可。
Open Office 使用手册
Open Office 使用手冊與微軟辦工室的兼容性OpenOffice 與微軟辦工室的兼容是頗高的,這是什麽意思呢?即是說,OpenOffice 是可以開啓以微軟辦工室格式儲存的文件,也可以儲存成微軟辦工室文件的格式,只需要在〔檔案〕->〔另存新檔〕,在儲存類型選擇微軟的檔案格式。
好多微軟辦工室有的工能,在OpenOffice 中也可以找到,OpenOffice 支援大多數格式的文件,以下是OpenOffice 與微軟辦工室的功能對應表。
開啓微軟辦工室文件在選單中按下〔檔案〕->〔開啓舊檔〕然後選取所需要開啓的檔案。
練習將point.sxw儲存為point.doc的格式,然後再用OpenOffice開啓point.doc。
插入OpenOffice圖片庫的圖片在功能列可以找到圖示,按一下便會開啓OpenOffice圖片庫的視窗,將圖片拖拉到想要加入的地方便可。
再按一下圖示關閉圖片庫的視窗。
從檔案插入圖片在清單選擇〔插入〕->〔圖形〕->〔從檔案〕,然後選擇檔案即可。
移動圖片將指標移動到圖片,按滑鼠左鍵一下,移動一下滑鼠,看見滑鼠指標變成,按滑鼠右鍵不放,將滑鼠移動到圖片的新地點,放開滑鼠右鍵便可。
您或許會遇到圖片不能移動到下一頁或不能移動到文件某一特定地方,這是因為圖形的鎖定功能驅使圖形不能自由移動。
選擇圖形,按一下右鍵,改變一下鎖定的選項,有助圖形的移動性。
圖片加上標籤將指標移動到圖片上按滑鼠左鍵一下以選擇圖片,再按滑鼠右鍵,選擇標籤,填上所需的資料,按下確定。
紅圈內的文字讓使用者預覽將要插入的文字標籤。
物件的換行功能有些物件與文字之間的,選擇了一些圖形物件後,在〔格式〕->〔換行〕有好幾個選項,以下是選項的簡介:「不換行」「換頁」「自動最適換頁」「不環繞」圖片在文字之前「置於背景」圖片在文字背後練習開啓文件picture.sxw並將文件設定如下一樣:儲存格加上公式在需要加上公式的儲存格按下〔F2〕,便會看見物件列轉換成以下的模樣子,稱為公式列。
Linux下openoffice转换word文档到pdf文档时中文乱码问题
Linux下openoffice转换word文档到pdf文档时中文乱码问题报错显示:INFO: connectedJun 1, 2009 11:21:52 AMcom.artofsolving.jodconverter.openoffice.connection.AbstractOpenOffic eConnection disposingINFO: disconnectedException in thread "main"com.artofsolving.jodconverter.openoffice.connection.OpenOfficeExcepti on: conversion failed: could not load input documentatcom.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocument Converter.loadAndExport(OpenOfficeDocumentConverter.java:131)atcom.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocument Converter.convertInternal(OpenOfficeDocumentConverter.java:120)atcom.artofsolving.jodconverter.openoffice.converter.AbstractOpenOffice DocumentConverter.convert(AbstractOpenOfficeDocumentConverter.java:10 4)atcom.artofsolving.jodconverter.openoffice.converter.AbstractOpenOffice DocumentConverter.convert(AbstractOpenOfficeDocumentConverter.java:74) atcom.artofsolving.jodconverter.openoffice.converter.AbstractOpenOffice DocumentConverter.convert(AbstractOpenOfficeDocumentConverter.java:70) atcom.artofsolving.jodconverter.cli.ConvertDocument.convertOne(ConvertD ocument.java:154)atcom.artofsolving.jodconverter.cli.ConvertDocument.main(ConvertDocument.java:139)问题解决:此时可能是linux下的jre没有相应的中文字体的问题下载 simhei.ttf 黑体simsun.ttc 宋体两种字体文件找到jre的字体路径:/usr/jdk1.6.0_22/jre/lib/fonts新建文件夹fallback:mkdir fallback将字体simhei.ttf 、simsun.ttc拷贝到/usr/jdk1.6.0_22/jre/lib/fonts/fallback目录下重启openofficeps ax|grep soffice显示如下:22739 pts/5 S 0:00 /bin/sh/opt/3/program/soffice -headless-accept=socket,host=127.0.0.1,port=8100;urp; -nofirststartwizard22747 pts/5 Sl 0:01/opt/3/program/soffice.bin -headless-accept=socket,host=127.0.0.1,port=8100;urp; -nofirststartwizard23789 pts/5 S+ 0:00 grep soffice关闭soffice进程:kill 22739以后台启动openoffice:/opt/3/program/soffice -headless-accept=socket,host=127.0.0.1,port=8100;urp; -nofirststartwizard & 问题解决了!!但是,这种情况下只能解决,宋体和黑体的乱码问题,其他字体的还需添加字体文件来解决。
windows环境下php将office文件(wordexcelppt)转化为pdf
windows环境下php将office⽂件(wordexcelppt)转化为pdf 将office⽂件转化为pdf的⽅法有1.利⽤openoffice提供的服务(⽐较简单,但是转化的效果不太好)2.使⽤office提供的服务(注:这在windows服务器上,并且服务器上⾯安装了版本⽐较⾼的office)下⾯重点介绍利⽤office服务将office⽂件转化为pdf1.php开启dcom扩展打开php.ini,搜索php_com_dotnet和php_com_dotnet:extension=php_com_dotnet.dll //把前⾯的分号去掉com.allow_dcom = true //改为true重启apache2.配置office组件服务.像这样的操作还有两个!!3.下⾯就该介绍将office⽂件转化为pdf的代码了(1)ppt转pdf代码1public function ppt_to_pdf() {2$srcfilename = 'E:/aa.ppt';3$destfilename = 'E:/aa.pdf';4try {5if(!file_exists($srcfilename)){6return;7 }8$ppt = new \COM("powerpoint.application") or die("Unable to instantiate Powerpoint");9$presentation = $ppt->Presentations->Open($srcfilename, false, false, false);10$presentation->SaveAs($destfilename,32,1);11$presentation->Close();12$ppt->Quit();13 } catch (\Exception$e) {14if (method_exists($ppt, "Quit")){15$ppt->Quit();16 }17return;18 }19 }(2)excel转pdf代码1public function excel_to_pdf() {2$srcfilename = 'E:/aa.xls';3$destfilename = 'E:/aa.pdf';4try {5if(!file_exists($srcfilename)){6return;7 }8$excel = new \COM("excel.application") or die("Unable to instantiate excel");9$workbook = $excel->Workbooks->Open($srcfilename, null, false, null, "1", "1", true);10$workbook->ExportAsFixedFormat(0, $destfilename);11$workbook->Close();12$excel->Quit();13 } catch (\Exception$e) {14echo ("src:$srcfilename catch exception:" . $e->__toString());15if (method_exists($excel, "Quit")){16$excel->Quit();17 }18return;19 }20 }(3)word转pdf代码(其他的⽂本格式的⽂件也可以使⽤这个,例:txt⽂件)1public function doc_to_pdf() {2$srcfilename = 'E:/aa.doc';3$destfilename = 'E:/aa.pdf';4try {5if(!file_exists($srcfilename)){6return;7 }89$word = new \COM("word.application") or die("Can't start Word!");10$word->Visible=0;11$word->Documents->Open($srcfilename, false, false, false, "1", "1", true); 1213$word->ActiveDocument->final = false;14$word->ActiveDocument->Saved = true;15$word->ActiveDocument->ExportAsFixedFormat(16$destfilename,17 17, // wdExportFormatPDF18false, // open file after export19 0, // wdExportOptimizeForPrint20 3, // wdExportFromTo21 1, // begin page22 5000, // end page23 7, // wdExportDocumentWithMarkup24true, // IncludeDocProps25true, // KeepIRM26 1 // WdExportCreateBookmarks27 );28$word->ActiveDocument->Close();29$word->Quit();30 } catch (\Exception$e) {31if (method_exists($word, "Quit")){32$word->Quit();33 }34return;35 }36 }。
open office 文件扩展名-概述说明以及解释
open office 文件扩展名-概述说明以及解释1. 引言1.1 概述概述在如今数字化的时代,文件扩展名在我们的日常生活中扮演着至关重要的角色。
在电子文档领域中,各种文件扩展名用于标识文件的类型和格式。
而本文将聚焦于open office文件扩展名的定义和重要性,并提供更改open office文件扩展名的方法。
Open Office,作为一款知名的开源办公软件套件,广泛应用于文档处理、电子表格、演示文稿等各种办公任务中。
为了使不同的文件在open office中得以识别和打开,每个open office文件都会附带特定的文件扩展名,以便与其他文件区分开来,并识别所需的应用程序来处理它们。
了解open office文件扩展名的定义对于正确解释和使用这些文件至关重要。
因此,本文将对open office文件扩展名的定义进行详细介绍,以帮助读者更好地理解并应用这些文件。
此外,在本文的后续部分,我们将探讨一些常见的open office文件扩展名,使读者对open office中文件的常见类型有更清晰的认识。
通过了解这些扩展名,读者将能够更好地管理和处理open office中的文件。
最后,本文还将讨论open office文件扩展名的重要性,并提供一些实用的方法,帮助读者更改open office文件的扩展名。
无论是为了适应特定的应用程序要求,还是为了与其他平台的文件兼容,了解更改open office文件扩展名的方法将对读者在文件处理过程中起到积极的帮助作用。
通过深入了解和掌握open office文件扩展名的概念、定义、常见类型以及如何更改,读者将能够更加便捷地管理和操作open office中的文件。
接下来,我们将详细探讨open office文件扩展名的定义。
1.2 文章结构本文将按照以下结构展开对open office文件扩展名的深入探讨。
首先,在引言部分(1. 引言)中,我们将对全文进行一个概述,介绍open office文件扩展名的基本定义,并阐述本文的目的。
openoffice java 转pdf
openoffice java 转pdf将OpenOffice与Java结合使用以将文档转换为PDF的过程可以分为几个步骤。
以下是一个基本的指南:1.安装OpenOffice:确保已安装OpenOffice。
可以从OpenOffice官网下载最新版本。
2.配置OpenOffice服务:OpenOffice需要作为一个服务运行,以便从Java程序中访问它。
可以通过命令行启动OpenOffice服务,如下所示:3.bash复制代码path/to/openoffice/program/soffice -headless-accept="socket,host=127.0.0.1,port=8100;urp;"这将启动OpenOffice作为服务,并监听端口8100。
3. 使用Java代码连接OpenOffice:接下来,您需要使用Java代码连接到OpenOffice服务。
这可以通过Socket连接完成。
以下是一个示例代码片段:java复制代码import java.io.File;import java.io.IOException;import .Socket;import java.util.logging.Logger;public class OpenOfficeConnection {private static final Logger LOGGER =Logger.getLogger(OpenOfficeConnection.class.getName());private static final String HOST = "127.0.0.1";private static final int PORT = 8100;private Socket connection;private StringBuilder response = new StringBuilder();public OpenOfficeConnection() throws IOException {connection = new Socket(HOST, PORT);}public void executeCommand(String command) {// Send command to OpenOffice and read response}}4.执行转换命令:一旦连接到OpenOffice服务,就可以发送命令来执行文档转换。
web使用openoffice实现在线预览office文档
web使用openoffice实现在线预览office文档最近搞web项目,使用框架struts+spring+jpa实现,做到项目里面一个在线预览功能,试过无数的方法,最后得到了一个非常使用的方法,这方法也是我看过多篇博客的出来的,仅限参考。
效果图如下:第一步:通过第三方软件openoffice将office文档ppt,pptx,doc,docx,xls,xlsx转换成pdf文档;openoffice下载链接:/zh-cn/download/,第二步:JODConverter一个Java的OpenDocument 文件转换器,导入其相关的jar包下载地址:/detail/tan313/9041821第三步:进行安装文件,在进行项目开发前,必须启动openoffice,我这里不需要之前启动openoffice,启动openoffice写在代码中,使用代码进行启动;不过你唯一要改的就是你的openoffice安装路径,这里在后边我会说到的。
上面相关jar 包导入后,而且openoffice也安装好后,就可以进行项目开发:首先给出工具类,很重要:[java] view plain copy /** * */ package com.sdbd.utils; import java.io.File; import java.util.Date; importjava.util.regex.Pattern; importorg.artofsolving.jodconverter.OfficeDocumentConverter; importorg.artofsolving.jodconverter.office.DefaultOfficeManager Configuration; importorg.artofsolving.jodconverter.office.OfficeManager; /** * 这是一个工具类,主要是为了使Office2003-2007全部格式的文档(.doc|.docx|.xls|.xlsx|.ppt|.pptx) * 转化为pdf文件<br> * Office2010的没测试<br> * *@date 2012-11-5 * @author xhw * */ public class Office2PDF { /** * 使Office2003-2007全部格式的文档(.doc|.docx|.xls|.xlsx|.ppt|.pptx) 转化为pdf文件<br> * * @param inputFilePath *源文件路径,如:"e:/test.docx" * @param outputFilePath * 目标文件路径,如:"e:/test_docx.pdf" * @return */ public boolean openOfficeToPDF(String inputFilePath, String outputFilePath) { return office2pdf(inputFilePath,outputFilePath); } /** * 根据操作系统的名称,获取 3的安装目录<br> * 如我的 3安装在:C:/Program Files(x86)/ 3<br> * * @return 3的安装目录*/ public String getOfficeHome() { String osName =System.getProperty("");System.out.println("操作系统名称:"+osName); if (Pattern.matches("Linux.*", osName)){ return "/opt/3"; } else if (Pattern.matches("Windows.*", osName)){ return "C:/Program Files/OpenOffice 4"; } else if (Pattern.matches("Mac.*", osName)) { return"/Application/.app/Contents"; } return null; } /** * 连接 并且启动 * * @return */ public OfficeManager getOfficeManager(){ DefaultOfficeManagerConfiguration config = new DefaultOfficeManagerConfiguration(); // 获取 3的安装目录String officeHome = getOfficeHome();config.setOfficeHome(officeHome); // 启动OpenOffice的服务OfficeManager officeManager = config.buildOfficeManager(); officeManager.start(); returnofficeManager; } /** * 转换文件* * @param inputFile * @param outputFilePath_end * @param inputFilePath * @param outputFilePath * @param converter*/ public void converterFile(File inputFile, String outputFilePath_end, String inputFilePath, String outputFilePath, OfficeDocumentConverter converter){ File outputFile = new File(outputFilePath_end); // 假如目标路径不存在,则新建该路径if(!outputFile.getParentFile().exists()){ outputFile.getParentFile().mkdirs();} converter.convert(inputFile, outputFile); System.out.println("文件:" + inputFilePath + "\n转换为\n 目标文件:" + outputFile + "\n成功!"); } /** * 使Office2003-2007全部格式的文档(.doc|.docx|.xls|.xlsx|.ppt|.pptx) 转化为pdf文件<br> * * @param inputFilePath * 源文件路径,如:"e:/test.docx" * @param outputFilePath* 目标文件路径,如:"e:/test_docx.pdf" * @return */ public boolean office2pdf(String inputFilePath, String outputFilePath) { boolean flag = false; OfficeManager officeManager = getOfficeManager(); // 连接OpenOffice OfficeDocumentConverter converter = new OfficeDocumentConverter(officeManager); long begin_time = new Date().getTime(); if (null != inputFilePath) { File inputFile = newFile(inputFilePath); // 判断目标文件路径是否为空if (null == outputFilePath){ // 转换后的文件路径String outputFilePath_end =getOutputFilePath(inputFilePath); if (inputFile.exists()) {// 找不到源文件, 则返回converterFile(inputFile, outputFilePath_end, inputFilePath, outputFilePath, converter); flag = true; } } else{ if (inputFile.exists()) {// 找不到源文件, 则返回converterFile(inputFile, outputFilePath, inputFilePath, outputFilePath, converter); flag = true; } }officeManager.stop(); } else{ System.out.println("con't find the resource"); } long end_time = new Date().getTime(); System.out.println("文件转换耗时:[" + (end_time - begin_time) + "]ms");return flag; } /** * 获取输出文件* * @param inputFilePath * @return */ public String getOutputFilePath(String inputFilePath){ String outputFilePath =inputFilePath.replaceAll("." + getPostfix(inputFilePath),".pdf"); return outputFilePath; }/** * 获取inputFilePath的后缀名,如:"e:/test.pptx"的后缀名为:"pptx"<br> * * @param inputFilePath * @return */ public String getPostfix(String inputFilePath) { return inputFilePath.substring(stIndexOf(".") + 1); } } 在该工具类中,你需要改动的就是getOfficeHome()函数中返回值为你的openoffice的安装路径。
JAVA:借用OpenOffice将上传的Word文档转换成Html格式
本文由我司收集整编,推荐下载,如有疑问,请与我司联系JAVA:借用OpenOffice 将上传的Word 文档转换成Html 格式2013/09/24 0 为什么会想起来将上传的word 文档转换成html 式呢?设想,如果一个系统需要发布在页面的文章都是来自word 文档,一般会执行下面的流程:使用word 打开文档,Ctrl A,进入发布文章页面,Ctrl V。
看起来也不麻烦,但是,如果文档中包含大量图片呢?尴尬的事是图片都需要重新上传吧?如果可以将已经编写好的word 文档上传到服务器就可以在相应页面进行展示,将会是一件非常惬意的事情,最起码信息发布人员会很开心。
程序员可能就不会这么想了,囧。
将Word 转Html 的原理是这样的:1、客户上传Word 文档到服务器2、服务器调用OpenOffice 程序打开上传的Word 文档3、OpenOffice 将Word 文档另存为Html 式4、Over至此可见,这要求服务器端安装OpenOffice 软件,其实也可以是MS Office,不过OpenOffice 的优势是跨平台,你懂的。
恩,说明一下,本文的测试基于MS Win7 Ultimate X64 系统。
下面就是规规矩矩的实现。
1、下载OpenOffice,download.openoffice/index.htmlSo easy...2、下载Jodconverter artofsolving/opensource/jodconverter 这是一个开启OpenOffice进行式转化的第三方jar 包。
3、泡杯热茶,等待下载。
4、安装OpenOffice,安装结束后,调用cmd,启动OpenOffice 的一项服务:C:\Program Files (x86)\OpenOffice 3\program soffice -headless -accept=socket,port=8100;urp;5、打开eclipse6、喝杯热茶,等待eclipse 打开。
java平台,使用openoffice将word转换为html
java环境下将word转换为html目前没有很简单的方法。
使用openOffice实现应该算是“矬子里面拔大个”。
1,首先下载openOffice。
这是个第三方开源的项目,专门用于在java环境中进行类似word 文档编写(要是连个word编辑都做不出来,那java在外行心目中地位就蹭蹭地下去了)。
我下载的是 3.2版本。
2,下载后安装。
通过cmd进入“安装目录\ 3\program”文件夹下。
运行一下命令soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard意思是启动openoffice的一个服务,以备为其他程序使用(看看咱们的开源领袖多大方,不像微软那么小气,生怕自己的用)。
3,测试一下8100端口是否能使用。
cmd命令“telnet localhost 8100”,如果开启了,就会有黑的不能再黑的屏幕显现,如果没开启,就会出现连接不上的消息。
4,下载jodconverter项目,我下的是2.2.2版本。
(咱就不重复制造轮子了,直接就上车吧!)5,自己创建项目,把jodconverter文件夹lib中的所有jar包都引用一下。
然后写下以下代码public static void main(String args[]) {File inputFile = new File("D:\\test\\广告测试.doc");File outputFile = new File("D:\\test\\广告测试.html");OpenOfficeConnection connection = new SocketOpenOfficeConnection(8100);try{connection.connect();}catch(Exception e){e.printStackTrace();}DocumentConverter converter = new OpenOfficeDocumentConverter(connection);converter.convert(inputFile, outputFile);connection.disconnect();}然后就运行一下,应该没什么问题。
java openoffice用法
java openoffice用法OpenOffice是一款开源、跨平台的办公套件,提供了文字处理、电子表格、演示文稿等多种功能。
Java OpenOffice用法是指使用Java编程语言与OpenOffice进行交互,实现自动化文档操作、数据处理等功能。
Java OpenOffice的常见用途包括:1. 文档生成与处理:使用Java OpenOffice可以生成各种类型的文档,如Word文档、PDF文档等。
通过Java代码,可以控制文档格式、内容、样式等,实现自动化的文档生成。
同时,Java OpenOffice还可以对已有文档进行编辑、修改、合并等操作。
2. 数据导入与导出:通过Java OpenOffice,可以将数据库或其他数据源中的数据导入到OpenOffice文档中,实现数据的格式化展示。
反之,也可以将OpenOffice文档中的数据导出到数据库或其他数据源中,实现数据的持久化存储。
3. 批量处理与自动化:Java OpenOffice提供了一系列的API,可以对大量的文档进行批量处理。
比如,可以通过Java代码自动化地将多个文档合并为一个文档,或者将一个文档分割为多个文档。
这样,可以大大提高工作效率,并减少手动操作的时间和错误。
4. 模板管理:Java OpenOffice支持使用模板来创建文档,通过Java代码可以动态地填充模板中的变量和内容。
这样,可以快速地生成符合特定格式要求的文档。
同时,还可以实现模板的更新和管理,方便灵活地应对不同的需求。
5. 图表和图形操作:Java OpenOffice能够创建各种类型的图表和图形,并对其进行自定义。
通过Java代码,可以更改图表的样式、颜色、标签等,并将其插入到文档中或导出为图片文件。
6. 导出为其他格式:Java OpenOffice不仅可以导出为常见的文档格式,还可以将文档导出为HTML、XML、纯文本等格式。
这样,可以方便地将文档共享给其他系统或进行进一步处理。
Windows系统中的常见文件格式转换方法
Windows系统中的常见文件格式转换方法在日常工作和学习中,我们经常会遇到需要进行文件格式转换的情况。
无论是转换文档、图片、音频还是视频文件格式,Windows系统提供了多种简便而高效的方法来完成这一任务。
本文将介绍常见的文件格式转换方法,帮助您快速处理不同格式的文件。
一、文档文件格式转换1. Microsoft Office应用程序:Windows系统上安装了Microsoft Office软件套件后,您可以使用其中的Word、Excel和PowerPoint等应用程序进行文档文件格式转换。
只需打开目标文件,然后选择“另存为”选项,在保存类型中选择您需要的格式,点击保存即可完成转换。
2. 在线文档转换工具:如果您不希望安装额外的软件或使用Microsoft Office程序,还可以使用在线文档转换工具进行格式转换。
例如,Zamzar、SmallPDF和Adobe Acrobat等在线工具都提供了文档文件格式转换服务。
打开相应的网页,上传要转换的文件,选择目标格式,然后点击转换即可下载转换后的文件。
二、图片文件格式转换1. Windows系统内置图片查看器:Windows系统自带的图片查看器(照片)提供了简单的图片格式转换功能。
只需打开要转换的图片,在菜单栏中选择“文件”-“另存为”,然后选择您需要的格式并保存。
2. 图片格式转换工具:除了系统自带的图片查看器外,还有许多专业的图片格式转换工具可供选择。
例如,IrfanView和XnConvert等软件提供了更多的批量转换选项和高级设置,可以满足不同转换需求。
三、音频文件格式转换1. Windows媒体播放器:Windows系统自带的媒体播放器提供了基本的音频转换功能。
只需打开媒体播放器,将要转换的音频文件拖放到播放器界面中,然后选择“文件”-“转换”选项,选择目标格式并保存即可完成转换。
2. 音频格式转换软件:如果需要更多的音频格式转换选项和功能,可以使用专业的音频格式转换软件。
使用openoffice转换为pdf格式
Batchproce ssing with Open Offic eMS dida big jobsprea dingoffic e for mat w orldw ide.It is almo st ev erywh ere,tons,mill ionsof fi les.Often it i s nee ded t o aut omate proc essin g ofthisfiles. One wayis togo w ith M S Off ice w ith V BA or OLEautom ation, thi s req uires lice nse f or of ficeand w in32syste m aswell. Othe r way is t o gowithOpenOffic e, wh ich i s fre e andreli able.Ope nOffi ce h as ni ce ba tch p roces singfeatu res w hichno co mpeti torshave. Abou t the m I w ant t o tel l tod ay. I woul d cal l thi s fea tureunatt ended usag e oropenoffic e bat chpr ocesi ng. A nd it rock s.S trong poin ts of Open Offic e are Work s onWindo ws OS fami ly as well as L inuxOS Can open A LO T offileforma ts Itcan s ave t o man y fil e for matsI t can runMacro s, ev en VB A wit h htt p://g o-oo.orgTypic al ap plica tions areImag ine y ou ha ve to inde x 1000 doc docu ment?Or uplo ad ex cel t ableto si te an d ext ractall d ata f rom i t ?Or co nvert 10000 doc ument to P DF ?Open Offic e bat ch us ageLetstry s ometh ing s imple at f irsttime, forexamp le ho w toconve rt DO C toPDF ?Her e isexamp le us ing O ffice 3.1for h ow to conv ert f rom M S Wor d DOC to A dobePDF.RunOpenO ffice andopenin ma in me nu To ols -> Mac ro -> Orga nizeDialo g ->Modul es -> My M acrosCli ck Ne w but ton a nd ch oosename: Modu le1.Inse rt th is co de in to mo duleand s aveSub S aveAs PDF(cFile )D im oP roper tyVal ue As Newcom.s un.st ar.be ans.P roper tyVal uecURL= Con vertT oURL( cFil e )' Op en fi leo Prope rtyVa lue.N ame = "Hid den"oPro perty Value.Valu e = TrueoDoc = St arDes ktop.loadC ompon entFr omURL( cUR L, "_blank", 0, _A rray(oProp ertyV alue,))' Gen erate PDFnamein sa me di recto ryc File= Lef t( cF ile,Len(cFile ) -4 ) + ".pd f"c URL = Conv ertTo URL(cFile )' Sav e the docu mentusing a fi lter.oPr opert yValu e.Nam e = "Filte rName"oP roper tyVal ue.Va lue = "wr iter_pdf_E xport"oD oc.st oreTo URL(cURL, Arra y(oPr opert yValu e))oDoc.clos e( Tr ue )End S ubT o exe cutethismacro in u natte ndedmoderun t his c omman d:s offic e.exe -inv isibl e "ma cro:///Sta ndard.Modu le1.S aveAs PDF(c:\sam ple.d oc)"Chec k c:\ it s hould cont ain s ample.PDFThat s it!You canuse y our e ditor formacro s, Ma cro f ilesare s tored XMLfiles, forwind ows l ook f or th em inc:\Docum ent a nd Se tting s\<us er>\A pplic ation Data\Open Offic e.org\3\us er\ba sic\S tanda rt S ame m ethod work s inLinux. You cando it on h eadle ss se rver.Thi s issimpl e cas e. If youwantto di ve de epertry t o goo gle f or UN O.===============================用ja va把MS offi ce转成p df 2011-03-18 16:50:04| 分类: Jod2S |字号订阅引自:梦女孩先用open Offic e把ppt、word、exce l、txt转换成pd f,然后用swfto ols转换成swf,然后在线播放。
linux平台的office文档转pdf的实例(程序员的菜)
linux平台的office⽂档转pdf的实例(程序员的菜)需要材料:1、 Openoffice3.4(我是32位的centos,可以根据⾃⼰的系统下载指定的openoffice软件包)2、 jodconverter.2.2.23、32位的centos5.5(⽹络⼀搜⼀⼤把)4、jdk1.7思路很简单就是安装好openoffice3.4,在⽤jodconverter.2.2.2对⽂档进⾏转换。
详细步骤:1、解压下载下来的openoffice包,进⼊该包的⽬录后,只⽤以下命令。
tar -zxvf openoffice的包名2、解压完后,会产⽣⼀个zh-CN(或者其他类似的,要看是语⾔了),进⼊该⽬录后有个rpms,进⼊rpms⽂件夹。
输⼊以下命令即可安装openoffice(如果提⽰什么依赖,那你要⼀个⼀个安装了。
有些系统对:rpm -ivh *.rpm,不会⾃动安装)rpm -ivh *.rpm3、安装完后,就应该开启openoffice服务。
输⼊以下命令,openoffice默认安装在/opt⽂件⾥。
(开启服务,会遇到⼀系列错误,可以找搜索引擎)/opt/3/program/soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard &4、判断是否开启openoffice服务成功ps aux|grep soffice 查看进程5、开启openoffice服务成功后,使⽤jodconverter.2.2.2来转换,可以使⽤以下命令(最好使⽤root⽤户,不然会遇到很多权限问题)jodconverter的解压路径: /usr/local/wenku/jodconverter-2.2.2/lib/jodconverter-cli-2.2.2.jar要进⾏转换的⽂件:/tmp/1.doc转换后的⽂件:/tmp/1.pdfjava -jar /usr/local/wenku/jodconverter-2.2.2/lib/jodconverter-cli-2.2.2.jar /tmp/1.doc /tmp/1.pdf如果成功了,/tmp⽂件夹下会多出⼀个pdf⽂件。
用PageOffice实现批量转换导出Word文档
用PageOffice实现C# 批量转换导出Word文档在某些涉及到报表的项目开发中,可能经常会遇到需要批量的生成某些文档的操作,这些文档若是要点击一下,生成一个的话,就太浪费时间了。
但若用FileMakerCtrl控件来实现的话就简单容易的多了。
下面我就以批量转换10个Word文档为例来分享一下FileMakerCtrl控件的使用方法。
第一步:请先安装PageOffice的服务器端的安装程序,之后在你的网站或项目的根目录下添加pageoffice文件夹(在PageOffice官方网站的“下载中心”中可下载相应的压缩包,解压之后直接将PageOffice实例代码里的pageoffice文件夹拷贝到根目录下就可以了)。
第二步:在网站或项目中添加文件夹存放word模板文件,我习惯命名为“doc”,将要打开的文件拷贝到该文件夹下,我要转换的文件为“template.doc”,该文件中有一个书签,名称为“PO_company”。
第三步:在网站或项目中创建动态页面FileMaker.aspx。
在工具箱中拖动一个FileMakerCtrl控件到页面上(FileMakerCtrl控件位于工具箱最下方)。
在FileMaker.aspx.cs后台页面中,添加代码如下://设置服务器页面FileMakerCtrl1.ServerPage = "pageoffice/server.aspx";string id = Request.QueryString["id"];if (id != null&& id.Length > 0){PageOffice.WordWriter.WordDocument doc = newPageOffice.WordWriter.WordDocument();//禁用右击事件doc.DisableWindowRightClick = true;//给数据区域赋值,即把数据填充到模板中相应的位置doc.OpenDataRegion("PO_company").Value = "北京卓正志远软件有限公司" + id;//设置保存页面FileMakerCtrl1.SaveFilePage = "Savemaker.aspx?id=" + id;FileMakerCtrl1.SetWriter(doc);//设置转换完成后执行的JS函数FileMakerCtrl1.JsFunction_OnProgressComplete = "OnProgressComplete()";//打开文档FileMakerCtrl1.FillDocument(Server.MapPath("doc/template.doc"),PageOffice.DocumentOpenType.Word);}在前台添加JS函数OnProgressComplete()如下:function OnProgressComplete() {window.parent.myFunc(); //调用父页面(Default.aspx)的js函数}第四步:在网站或项目中创建动态页面SaveMaker.aspx,保存转换后的Word 文档到本地磁盘上,部分代码如下://定义FileSaver对象PageOffice.FileSaver fs = new PageOffice.FileSaver();string fileName = "maker" + id + fs.FileExtName;//将Word文档保存到本地磁盘上fs.SaveToFile(Server.MapPath("doc/") + fileName);fs.Close();第五步:在网站或项目中创建动态页面Default.aspx。
Java利用openoffice将doc、docx转为pdf实例代码
Java利⽤openoffice将doc、docx转为pdf实例代码本⽂研究的主要是Java编程利⽤openoffice将doc、docx转为pdf的实现代码,具体如下。
1. 需要⽤的软件OpenOffice , JodConverter2.启动OpenOffice的服务我到⽹上查如何利⽤OpenOffice进⾏转码的时候,都是需要先⽤cmd启动⼀个soffice服务,启动的命令是:soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;"。
但是实际上,对于我的项⽬,进⾏转码只是偶尔进⾏,然⽽当OpenOffice的转码服务启动以后,该进程(进程名称是soffice.exe)会⼀直存在,并且⼤约占100M的内存,感觉⾮常浪费。
于是我就想了⼀个办法,可以将执⾏该服务的命令直接在Java代码⾥⾯调⽤,然后当转码完成的时候,直接⼲掉这个进程。
在后⾯的JAVA代码⾥⾯会有解释。
所以,实际上,这第2步可以直接跳过3.将JodConverter相关的jar包添加到项⽬中将JodConverter解压缩以后,把lib下⾯的jar包全部添加到项⽬中注意:安装openoffice4. 下⾯就是重点喽,详见Java代码解析package cn;import java.io.BufferedReader;import java.io.File;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStreamReader;import com.artofsolving.jodconverter.DocumentConverter;import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection;import com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection;import com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter;/*** office转化为pdf* pdf转化为swf⽂件* @author Administrator**/public class Converter {private static String openOfficePath = "E:\\安装软件\\openoffice\\date";//openoffice软件的安装路径/*** 将Office⽂档转换为PDF. 运⾏该函数需要⽤到OpenOffice和jodconverter-2.2.2* <pre>* ⽅法⽰例:* String sourcePath = "F:\\office\\source.doc";* String destFile = "F:\\pdf\\dest.pdf";* Converter.office2PDF(sourcePath, destFile);* </pre>** @param sourceFile* 源⽂件, 绝对路径. 可以是Office2003-2007全部格式的⽂档, Office2010的没测试. 包括.doc,* .docx, .xls, .xlsx, .ppt, .pptx等. ⽰例: F:\\office\\source.doc* @param destFile* ⽬标⽂件. 绝对路径. ⽰例: F:\\pdf\\dest.pdf* @return 操作成功与否的提⽰信息. 如果返回 -1, 表⽰找不到源⽂件, 或url.properties配置错误; 如果返回 0,* 则表⽰操作成功; 返回1, 则表⽰转换失败*/public static int office2PDF(String sourceFile, String destFile) {try {File inputFile = new File(sourceFile);if (!inputFile.exists()) {return -1;// 找不到源⽂件, 则返回-1}// 如果⽬标路径不存在, 则新建该路径File outputFile = new File(destFile);if (!outputFile.getParentFile().exists()) {outputFile.getParentFile().mkdirs();}String OpenOffice_HOME = openOfficePath;//这⾥是OpenOffice的安装⽬录// 如果从⽂件中读取的URL地址最后⼀个字符不是 '\',则添加'\'if (OpenOffice_HOME.charAt(OpenOffice_HOME.length() - 1) != '\\') {OpenOffice_HOME += "\\";}// 启动OpenOffice的服务String command = OpenOffice_HOME+ "program\\soffice.exe -headless -accept=\"socket,host=127.0.0.1,port=8100;urp;\"";Process pro = Runtime.getRuntime().exec(command);// connect to an instance running on port 8100OpenOfficeConnection connection = new SocketOpenOfficeConnection("127.0.0.1", 8100);connection.connect();// convertDocumentConverter converter = new OpenOfficeDocumentConverter(connection);converter.convert(inputFile, outputFile);// close the connectionconnection.disconnect();// 关闭OpenOffice服务的进程pro.destroy();return 0;}catch (FileNotFoundException e) {e.printStackTrace();return -1;}catch (IOException e) {e.printStackTrace();}return 1;}public static void main(String []args) throws Exception {String sourcePath = "C:\\Users\\Administrator\\Desktop\\1\\分组情况⼀览表.xls";String destFile = "C:\\Users\\Administrator\\Desktop\\1\\dest.pdf";int flag = Converter.office2PDF(sourcePath, destFile);if (flag == 1) {System.out.println("转化失败");} else if(flag == 0){System.out.println("转化成功");} else {System.out.println("找不到源⽂件, 或url.properties配置错误");}}}总结以上就是本⽂关于Java利⽤openoffice将doc、docx转为pdf实例代码的全部内容,希望对⼤家有所帮助。
利用openoffice+jodconverter-code-3.0-bate4实现ppt转图片
利⽤openoffice+jodconverter-code-3.0-bate4实现ppt转图⽚本⽂实例为⼤家分享了openoffice+jodconverter-code-3.0-bate4实现ppt转图⽚的具体代码,供⼤家参考,具体内容如下安装openoffice4 (⽤于把⽂档(ppt)转成pdf)根据系统的位数安装使⽤jodconverter-core3.0-beta-4(要上传maven本地仓库)安装ImageMagick:yum install ImageMagick(⽤于pdf转图⽚)安装pdftotext ⽤于提取⽂字⼤纲 yum install poppler-utilsperl脚本(⽤于提取pdf⽂档的⽂字⼤纲)使⽤jodconverter调⽤OpenOffice 将office⽂档转换为PDF时。
如果转换程序异常中⽌⽽OpenOffice并没有停⽌运⾏的话。
openoffice1、启动tomcat时,启动openoffice服务(个⼈感觉有风险问题)2、⼿⼯⽤命令,启动openoffice服务,在使⽤链接服务(推荐)package com.document.servers.impl;import java.io.File;import .ConnectException;import javax.annotation.PostConstruct;import javax.annotation.PreDestroy;import org.artofsolving.jodconverter.OfficeDocumentConverter;import org.artofsolving.jodconverter.office.DefaultOfficeManagerConfiguration;import org.artofsolving.jodconverter.office.ExternalOfficeManagerConfiguration;import org.artofsolving.jodconverter.office.OfficeConnectionProtocol;import org.artofsolving.jodconverter.office.OfficeManager;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.stereotype.Service;//import com.artofsolving.jodconverter.DefaultDocumentFormatRegistry;//import com.artofsolving.jodconverter.DocumentConverter;//import com.artofsolving.jodconverter.DocumentFamily;//import com.artofsolving.jodconverter.DocumentFormat;//import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection;//import com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection;//import com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter;import com.document.servers.OfficeService;/*** linux下:* cd /opt/openoffice4/program* ./soffice "-accept=socket,host=localhost,port=8100;urp;StarOffice.ServiceManager" -nologo -headless -nofirststartwizard &*/@Service("officeService")public class OfficeServiceImpl implements OfficeService {private static final Logger logger = LoggerFactory.getLogger(OfficeServiceImpl.class);private OfficeManager officeManager;private OfficeDocumentConverter documentConverter;// @PostConstruct// public void init() throws Exception {// // TODO Auto-generated method stub// officeManager = new DefaultOfficeManagerConfiguration().setOfficeHome("/opt/openoffice4").buildOfficeManager();//// documentConverter = new OfficeDocumentConverter(officeManager);// // officeManager.stop();//// logger.warn("openoffice starting....");// try {// officeManager.start();// logger.warn("openoffice started");// } catch (Exception e) {// logger.error("office start failed:{}", e);// }// }//// @PreDestroy// public void destroy() throws Exception {// // TODO Auto-generated method stub// ("shutdown office service....");// if (officeManager != null) {// try {//// officeManager.stop();// ("office closed");// } catch (Exception e) {// logger.error("office close failed:{}", e);// }// }// }// public void convert(String inputfilename, String outputfilename) {// ("convert...." + inputfilename + " to " + outputfilename);// documentConverter.convert(new File(inputfilename), new File(outputfilename));// }public void manualConvert(String inputfilename, String outputfilename) {("convert...." + inputfilename + " to " + outputfilename);// connect to an instance running on port 8100ExternalOfficeManagerConfiguration externalProcessOfficeManager = newExternalOfficeManagerConfiguration();externalProcessOfficeManager.setConnectOnStart(true);externalProcessOfficeManager.setPortNumber(8100);officeManager = externalProcessOfficeManager.buildOfficeManager();officeManager.start();("openoffice服务已链接");documentConverter = new OfficeDocumentConverter(officeManager);documentConverter.convert(new File(inputfilename), new File(outputfilename));}}转换处理⽅法package com.document.servers.impl;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.StringWriter;import java.io.UnsupportedEncodingException;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import javax.servlet.http.HttpServletRequest;import org.apache.pdfbox.pdmodel.PDDocument;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import com.document.defined.model.ImagePPT;import com.document.servers.OfficeService;import com.document.servers.PPTConvertServers;import com.document.tool.ImageMagickUtils;import com.document.tool.SystemConfig;import com.fasterxml.jackson.databind.ObjectMapper;import mand;@Service("pPTConvertServers")public class PPTConvertServersImpl implements PPTConvertServers {private static final Logger logger = LoggerFactory.getLogger(PPTConvertServersImpl.class);@Autowiredprivate OfficeService officeService;/*** (non-Javadoc)* 利⽤openoffice把ppt转图⽚*/public Map<String, Object> deal_ppt(HttpServletRequest request, String filePath, String extension, String title, String filename) throws Exception {("ppt转pdf,{}");// ppt⽂件地址String ppt_target_file = filePath;// pdf⽂件地址String path = filePath.substring(0, stIndexOf("."));String pdf_target_file = path + ".pdf";// 输出jpg⽂件地址String images_target_file = path + "/jpg" + "-%d.jpg";// if(exists(pdf_target_file)){// unlink(pdf_target_file);//删除// }// copy(new File(ppt_target_file), ppt_target_file, true);if (!extension.equals(".pdf")) {officeService.manualConvert(ppt_target_file, pdf_target_file);// 转成pdf⽂件}StringWriter writer = new StringWriter();// 提取⽂字⼤纲String[] pdf_lines = extractOutLineFromPDF(pdf_target_file);File filepath = new File(images_target_file);File parentFile = filepath.getParentFile();if (!parentFile.exists()) {("创建图⽚⽬录");parentFile.mkdirs();}Command.run("convert " + pdf_target_file + " " + images_target_file, writer);// 转成图⽚String basePath = request.getScheme() + "://" + request.getServerName() + "/";PDDocument document = PDDocument.load(new File(pdf_target_file));int pageCount = document.getNumberOfPages();document.close();List<ImagePPT> list = new ArrayList<ImagePPT>();String pathUrl = filename.substring(0, stIndexOf("."));if (pageCount > 0) {for (int i = 0; i < pageCount; i++) {ImagePPT imagePPT = new ImagePPT();imagePPT.setId(i + 1);if (pdf_lines.length > 0) {try {imagePPT.setTitle(pdf_lines[i]);} catch (Exception e) {// TODO Auto-generated catch blockimagePPT.setTitle(title);("title,数组越界");//e.printStackTrace();}} else {imagePPT.setTitle(title);}imagePPT.setUrl(basePath + "images/" + pathUrl + "/jpg-" + i + ".jpg");imagePPT.setPreviewUrl(basePath + "preview/images/" + pathUrl + "/preview/pjpg-" + i + ".jpg");// String oimgDir = SystemConfig.getBlobDirectory() + pathUrl + "/jpg-" + i + ".jpg";// String pimgDir = SystemConfig.getBlobDirectory() + pathUrl + "/preview/pjpg-" + i + ".jpg";// File pfilepath = new File(pimgDir);// File pf = pfilepath.getParentFile();// if (!pf.exists()) {// pf.mkdirs();// }//ImageMagickUtils.scale(oimgDir, pimgDir, 240, 180);//预览图list.add(imagePPT);}}// 拼接json字符串ObjectMapper objectMapper = new ObjectMapper();String jsonlist = objectMapper.writeValueAsString(list);// (jsonlist);Map<String, Object> map=new HashMap<String, Object>();map.put("json", jsonlist.toString());map.put("totalPage", pageCount);return map;* ⽂件已经上传过,进⾏替换性转换*/public Map<String, Object> replace_ppt(HttpServletRequest request, String filePath, String extension, String title, String filename) throws Exception {("替换,ppt转pdf,{}");// ppt⽂件地址String ppt_target_file = filePath;// pdf⽂件地址String path = filePath.substring(0, stIndexOf("."));String pdf_target_file = path + ".pdf";// 输出jpg⽂件地址String images_target_file = path + "/jpg" + "-%d.jpg";if (!extension.equals(".pdf")) {officeService.manualConvert(ppt_target_file, pdf_target_file);// 转成pdf⽂件}StringWriter writer = new StringWriter();// 提取⽂字⼤纲String[] pdf_lines = extractOutLineFromPDF(pdf_target_file);File filepath = new File(images_target_file);File parentFile = filepath.getParentFile();if (!parentFile.exists()) {("替换创建图⽚⽬录");parentFile.mkdirs();}Command.run("convert " + pdf_target_file + " " + images_target_file, writer);// 转成图⽚String basePath = request.getScheme() + "://" + request.getServerName() + "/";PDDocument document = PDDocument.load(new File(pdf_target_file));int pageCount = document.getNumberOfPages();document.close();List<ImagePPT> list = new ArrayList<ImagePPT>();String pathUrl = filename.substring(0, stIndexOf("."));if (pageCount > 0) {for (int i = 0; i < pageCount; i++) {ImagePPT imagePPT = new ImagePPT();imagePPT.setId(i + 1);if (pdf_lines.length > 0) {try {imagePPT.setTitle(pdf_lines[i]);} catch (Exception e) {// TODO Auto-generated catch blockimagePPT.setTitle(title);("title,数组越界");// e.printStackTrace();}} else {imagePPT.setTitle(title);}imagePPT.setUrl(basePath + "images/" + pathUrl + "/jpg-" + i + ".jpg");imagePPT.setPreviewUrl(basePath + "preview/images/" + pathUrl + "/preview/pjpg-" + i + ".jpg");// String oimgDir = SystemConfig.getBlobDirectory() + pathUrl + "/jpg-" + i + ".jpg";// String pimgDir = SystemConfig.getBlobDirectory() + pathUrl + "/preview/pjpg-" + i + ".jpg";// File pfilepath = new File(pimgDir);// File pf = pfilepath.getParentFile();// if (!pf.exists()) {// pf.mkdirs();// }// ImageMagickUtils.scale(oimgDir, pimgDir, 240, 180);list.add(imagePPT);}}// 拼接json字符串ObjectMapper objectMapper = new ObjectMapper();String jsonlist = objectMapper.writeValueAsString(list);// (jsonlist);Map<String, Object> map=new HashMap<String, Object>();map.put("json", jsonlist.toString());map.put("totalPage", pageCount);return map;}/*** 提取pdf⽂字⼤纲* @param pdf_file* @return* @throws UnsupportedEncodingException* @throws Exception*/public static String[] extractOutLineFromPDF(String pdf_file) throws UnsupportedEncodingException {String svndir = PPTConvertServersImpl.class.getResource("").getPath();svndir = svndir.split("WEB-INF")[0];svndir = svndir.replaceFirst("file:", "");(svndir);String command = "/usr/bin/perl " + svndir + "WEB-INF/sh/pdf_outline.pl " + pdf_file;(command);ByteArrayOutputStream writer = new ByteArrayOutputStream();Command.run2(command, writer);String outline = writer.toString("utf-8");("title pdf,{}", outline);String[] items = outline.split("///");return items;}/*** ⽂件是否存在** @param filename* @return @throws IOException*/public static boolean exists(String filename) {try {File file = new File(filename);return file.exists();/*** 删除⽂件** @param filename* @return*/public static boolean unlink(String filename) {try {File file = new File(filename);if (file.isFile()) {file.delete();return true;}return false;} catch (Exception e) {return false;}}/*** 拷贝⽂件** @param file* @param newname* @param overwrite* @return*/public static boolean copy(File file, String newname, boolean overwrite) {try {if (!overwrite && new File(newname).exists()) {return false;}FileInputStream input = new FileInputStream(file);File dest = new File(newname);if (!mkdir(dest.getParent())) {return false;}FileOutputStream output = new FileOutputStream(newname);byte[] b = new byte[1024 * 5];int len;while ((len = input.read(b)) != -1) {output.write(b, 0, len);}output.flush();output.close();input.close();return true;} catch (Exception e) {e.printStackTrace();return false;}}/*** 创建⽬录** @param dirname* @return*/public static boolean mkdir(String dir) {try {File file = new File(dir);if (!file.exists()) {file.mkdirs();}return true;} catch (Exception e) {e.printStackTrace();return false;}}}上传ppt⽂件处理类:package com.document.handle.controller;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.PrintWriter;import java.io.UnsupportedEncodingException;import java.util.Date;import java.util.Enumeration;import java.util.HashMap;import java.util.Map;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import mons.codec.digest.DigestUtils;import ng3.StringUtils;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.multipart.MultipartFile;import org.springframework.web.servlet.ModelAndView;import com.document.servers.PPTConvertServers;import com.document.tool.FilenameUtils;import com.document.tool.SystemConfig;import com.fasterxml.jackson.annotation.PropertyAccessor;import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility;import com.fasterxml.jackson.databind.ObjectMapper;import com.fasterxml.jackson.databind.ObjectWriter;@Controllerpublic class PptToImageController {private static final Logger logger = LoggerFactory.getLogger(PptToImageController.class);private static final String CALLBACK = "callback"; // 回调函数的参数名@Autowiredprivate PPTConvertServers pPTConvertServers;@RequestMapping(value = "/convert/upload")public ModelAndView updateFile(HttpServletRequest request, HttpServletResponse response) {ModelAndView mav = new ModelAndView();mav.addObject("name", "Hello Word");mav.setViewName("/ppt/uploadFile");("/convert/upload");return mav;}/*** 显⽰上传⽂件的页⾯表单。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
官方网站: /opensource/jodconverter下载地点:/opensource/jodconverter/new/zh_tw/downloads.html目前版本: JODConverter v2.2.1, OpenOffice v3.0.0使用需求: JDK1.4以上, 安装OpenOffice v2.0.3以上基本简介:JODConverter主要的功能是用来做各种档案的转换. 目前测试过, Word,Excel,PowerPoint 转PDF都是没问题的.因为JODConverter是透过OpenOffice来做转换, 所以使用前需要先安装OpenOffice, 并且将OpenOffice的Service启动, 才可以使用.具有一个鲜为人知的特性就是其能够作为一个服务来运行,而这种能力具有一定的妙用。
举例来说,你可以把openoffice.og变成一个转换引擎,利用这种转换引擎你可以通过网络接口或命令行工具对文件的格式进行转换,JODConverter可以帮助你实现的这种文件转换功能。
为了将作为一个转换引擎,你必须以服务的方式将它启动,使它在某个特定的端口监听连接,在Linux平台你可以用如下的命令启动:soffice -headless -accept=”socket,port=8100;urp;”(我在linux下使用soffice -headless-accept=”socket,host=127.0.0.1,port=8100;urp;”,open office server是开启来了,但是文件转换不成功,异常是连接失败,这个很可以是你用jodconverter来转换时使用的是localhost,而当你的机有host配置文件里没有将localhost与127.0.0.1对应起来时,就无法解析了,这里可以修改host文件或去掉host=127.0.0.1,这样我试过可以成功)在Windows平台, 使用如下命令:“C:\Program Files\ 2.2\program\soffice” -accept=”socket,port=8100;urp;”使用教学:Step1: 安装OpenOfficeStep2: 启动OpenOffice Service1 cd C:\Program Files\ 3\program2 soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizardStep3:将JODConverter的Jar档放进专案中的Library, 请检查你的专案是否包含以下的Jar档:jodconverter-2.2.1.jarjurt-2.3.0.jarxstream-1.2.2.jarridl-2.3.0.jarcommons-io-1.3.1.jarjuh-2.3.0.jarslf4j-api-1.4.3.jarunoil-2.3.0.jarslf4j-jdk14-1.4.3.jarStep4: 准备一个word档放在c:/document.docStep5: 执行以下程式Java代码1.<span style="font-size: medium;">import java.io.File;2.import com.artofsolving.jodconverter.DocumentConverter;3.import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection;4.importcom.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection;5.importcom.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter;6.public class JodDemo {7.public static void main(String[] args) throws Exception{8.File inputFile = new File("c:/document.doc");9.File outputFile = new File("c:/document.pdf");10.// connect to an instance running on port 810011.OpenOfficeConnection connection = new SocketOpenOfficeConnection(8100);12.connection.connect();13.// convert14.DocumentConverter converter = new OpenOfficeDocumentConverter(connection);15.converter.convert(inputFile, outputFile);16.// close the connection17.connection.disconnect();18.}19.} </span>程式说明:程式的部份相当简洁, 特别要注意的地方是第12行连线的port必须与你启动OpenOffice 的Port相同,另外JODConverter预设是用副档名作文件种类的判断, 所以副档名必须要正确才行.如果副档名比较特别的话, 就必须在convert()的时候强制指定Document Type.心得:JODConverter使用起来相当方便, 官网也提供War档让JODConverter变成Web Service 提供给不同的语言来呼叫.特别要注意的是, OpenOffice Service并不是ThreadSafe的, 多个Web AP在使用的时候必须要注意.那我也來補充一些好了之前也在試這個檔案轉換的程式程式最好加上try-catch因為之前发現有些檔案format 不能转,发生Exception 后,connection 不會自动切断,程序会hand 住所以改成如下方式:Java代码1.<span style="font-size: medium;">public void convert(String input, String output){2.File inputFile = new File(input);3.File outputFile = new File(output);4.OpenOfficeConnection connection = new SocketOpenOfficeConnection(8100);5.try {6.connection.connect();7.DocumentConverter converter = new OpenOfficeDocumentConverter(connection);8.converter.convert(inputFile, outputFile);9.} catch(Exception e) {10. e.printStackTrace();11.} finally {12.try{ if(connection != null){connection.disconnect(); connection = null;}}catch(Exceptione){}13.}14.} </span>再來,明明就是open office 的檔案,卻生不能轉換的問題。
例如:*.STW, *.SXD, *.ODF 等,後來才知道可以自行指定來源檔和輸出檔的mime-type,程式如下:Java代码1.<span style="font-size: medium;">public void convertSTW(String input, String output){2.DocumentFormat stw = new DocumentFormat(" 1.0 Template",DocumentFamily.TEXT, "application/vnd.sun.xml.writer", "stw");3.DefaultDocumentFormatRegistry formatReg = new DefaultDocumentFormatRegistry();4.DocumentFormat pdf = formatReg.getFormatByFileExtension("pdf");5.File inputFile = new File(input);6.File outputFile = new File(output);7.OpenOfficeConnection connection = new SocketOpenOfficeConnection(8100);8.try {9.connection.connect();10.DocumentConverter converter = new OpenOfficeDocumentConverter(connection);11.converter.convert(inputFile, stw, outputFile, pdf);12.} catch(Exception e) {13. e.printStackTrace();14.} finally {15.try{ if(connection != null){connection.disconnect(); connection = null;}}catch(Exceptione){}16.}17.} </span>上面的程式是轉換STW 到PDF,如果是SXD / ODF 則只需要變更DocumentFormat 的內容即可。
Java代码1.<span style="font-size: medium;">DocumentFormat sxd = newDocumentFormat(" 1.0 Drawing", DocumentFamily.DRAWING,"application/vnd.sun.xml.sraw", "sxd");2.DocumentFormat odf = new DocumentFormat("OpenDocument Math",DocumentFamily.TEXT, "application/vnd.oasis.opendocument.formula", "odf"); </span>所有default support 的DocumentFormat 都在com.artofsolving.jodconverter.DefaultDocumentFormatRegistry 裡,但並非所有open office 支援的file format 都有,所以要像上面的方法自行去定义DocumentFormat,至于它里面的参数可以从jodconverter-2.2.2.jar包的com.artofsolving.jodconverter包下的document-formats.xml文件里面得到,这样就可以完成多种格式的转换,如open office,ms office ,wps office及所有的纯文本文件。