「odf解析java」odb odf
今天给各位分享odf解析java的知识,其中也会对odb odf进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
如何使用java从ODF文件中提取内容
import java.io.File;
import java.io.IOException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.text.PDFTextStripper;
import org.apache.pdfbox.text.PDFTextStripperByArea;
try {
PDDocument document = null;
document = PDDocument.load(new File("test.pdf"));
document.getClass();
if (!document.isEncrypted()) {
PDFTextStripperByArea stripper = new PDFTextStripperByArea();
stripper.setSortByPosition(true);
PDFTextStripper Tstripper = new PDFTextStripper();
String st = Tstripper.getText(document);
System.out.println("Text:" + st);
}
} catch (Exception e) {
e.printStackTrace();
}
件):独立事件:A发生与否对B发生的概率没有影响,这样
jodconverter支持什么格式转换
[JODConverter]word转pdf心得分享(转)
文档视频转为flash格式在线播放
OfficeSocketLinuxOpenSourceExcel
官方网站:
下载地点:
目前版本: 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.org具有一个鲜为人知的特性就是其能够作为一个服务来运行,而这种能力具有一定的妙用。举例来说,你可以把openoffice.og变成一个转换引擎,利用这种转换引擎你可以通过网络接口或命令行工具对文件的格式进行转换,JODConverter可以帮助你实现OpenOffice.org的这种文件转换功能。
为了将OpenOffice.org作为一个转换引擎,你必须以服务的方式将它启动,使它在某个特定的端口监听连接,在Linux平台你可以用如下的命令启动openoffice.org:
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\OpenOffice.org 2.2\program\soffice” -accept=”socket,port=8100;urp;”
使用教学:
Step1: 安装OpenOffice
Step2: 启动OpenOffice Service
1 cd C:\Program Files\OpenOffice.org 3\program
2 soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard
Step3:将JODConverter的Jar档放进专案中的Library, 请检查你的专案是否包含以下的Jar档:
jodconverter-2.2.1.jar
jurt-2.3.0.jar
xstream-1.2.2.jar
ridl-2.3.0.jar
commons-io-1.3.1.jar
juh-2.3.0.jar
slf4j-api-1.4.3.jar
unoil-2.3.0.jar
slf4j-jdk14-1.4.3.jar
Step4: 准备一个word档放在c:/document.doc
Step5: 执行以下程式
Java代码
span style="font-size: medium;"import java.io.File;
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;
public class JodDemo {
public static void main(String[] args) throws Exception{
File inputFile = new File("c:/document.doc");
File outputFile = new File("c:/document.pdf");
// connect to an OpenOffice.org instance running on port 8100
OpenOfficeConnection connection = new SocketOpenOfficeConnection(8100);
connection.connect();
// convert
DocumentConverter converter = new OpenOfficeDocumentConverter(connection);
converter.convert(inputFile, outputFile);
// close the connection
connection.disconnect();
}
} /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代码
span style="font-size: medium;"public void convert(String input, String output){
File inputFile = new File(input);
File outputFile = new File(output);
OpenOfficeConnection connection = new SocketOpenOfficeConnection(8100);
try {
connection.connect();
DocumentConverter converter = new OpenOfficeDocumentConverter(connection);
converter.convert(inputFile, outputFile);
} catch(Exception e) {
e.printStackTrace();
} finally {
try{ if(connection != null){connection.disconnect(); connection = null;}}catch(Exception e){}
}
} /span
再来,明明就是 open office 的档案,却生不能转换的问题。例如:*.STW, *.SXD, *.ODF 等,後来才知道可以自行指定来源档和输出档的 mime-type,程式如下:
Java代码
span style="font-size: medium;"public void convertSTW(String input, String output){
DocumentFormat stw = new DocumentFormat("OpenOffice.org 1.0 Template", DocumentFamily.TEXT, "application/vnd.sun.xml.writer", "stw");
DefaultDocumentFormatRegistry formatReg = new DefaultDocumentFormatRegistry();
DocumentFormat pdf = formatReg.getFormatByFileExtension("pdf");
File inputFile = new File(input);
File outputFile = new File(output);
OpenOfficeConnection connection = new SocketOpenOfficeConnection(8100);
try {
connection.connect();
DocumentConverter converter = new OpenOfficeDocumentConverter(connection);
converter.convert(inputFile, stw, outputFile, pdf);
} catch(Exception e) {
e.printStackTrace();
} finally {
try{ if(connection != null){connection.disconnect(); connection = null;}}catch(Exception e){}
}
} /span
上面的程式是转换 STW 到 PDF,如果是 SXD / ODF 则只需要变更 DocumentFormat 的内容即可。
Java代码
span style="font-size: medium;"DocumentFormat sxd = new DocumentFormat("OpenOffice.org 1.0 Drawing", DocumentFamily.DRAWING, "application/vnd.sun.xml.sraw", "sxd");
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及所有的纯文本文件。
在此献给所有需要作 File Convert 的人试试。
免钱的,最好用。还有 source code 可以自己改。
另 将图片文件放入 word中可直接用word自带 pdf 转化工具进行转化!
怎样使用Java读取OpenOffice文档
1. OpenOffice Spreedsheet 文档
假设我们需要读取如下图所示的OpenOffice Spreedsheet 文档:
2. 下载 ODF4j
Odf4j 是用于读取OpenOffice 文档(ODF)的纯Java的工具包。目前虽然还没有正式发布,但是已经具备了处理OpenOffice文档的基本功能。
使用Odf4j,Java程序员可以非常容易地创建,修改OpenOffice 文档。
3. 使用 ODF4j 读取 OpenOffice 文档
使用ODF4j读取OpenOffice文档包括两个层次:Package Layer和Document Layer。
Package Layer
在Package Layer,OpenOffice文档里的各种资源是作为一个命名的资源来处理。在这个层次一般用于操作二进制文件,比如图片等。
Document Layer
在Document Layer,主要正对文档的内容进行操作。在这个层次,文档内容是作为层次结构被操作的,因为文档的内容是以XML文件方式保存,所以可以非常方便的以 DOM方式来操作。下面的示例中,将以Document Layer来读取一个OpenOffice Spreadsheet文档。
4. 读取 OpenOffice Spreadsheet 文档
importorg.openoffice.odf.OdfPackage; importorg.openoffice.odf.OpenDocumentFactory; importorg.openoffice.odf.spreadsheet.SpreadsheetDocument; importorg.w3c.dom.Document; importorg.w3c.dom.Element; importorg.w3c.dom.NodeList; ...... OdfPackageodfPackage; odfPackage=(SpreadsheetDocument)OpenDocumentFactory.load(path); Documentdoc=odfPackage.getDocument(OdfPackage.STREAMNAME_CONTENT); Elementroot=doc.getDocumentElement(); ......
Source code
当获得root Element后,我们就可以像读取xml文件一样读取OpenOffice文档中的内容。
odf解析java的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于odb odf、odf解析java的信息别忘了在本站进行查找喔。
发布于:2022-12-23,除非注明,否则均为
原创文章,转载请注明出处。