繁体   English   中英

如何提取rtf表

[英]How to extract rtf tables

我有一个rtf文件。 它里面有很多桌子。 我一直在尝试使用Java(POI和tika)提取表。 在.doc中定义表是很容易的。 但是,在rtf文件中,似乎没有任何“这是表格”标记作为元数据的一部分。 有谁知道从这样的文件中提取表的最佳策略是什么? 将其转换为其他文件格式的帮助。 我有什么线索可以查找吗?

有一个叫做unrtf的linux工具,请看手册

使用该应用程序,您可以将rtf文件转换为html:

unrtf --html your_input_file.rtf > your_output_file.html

现在,您可以使用任何编程api来处理html / xml并轻松提取表。 您需要吗?

感谢hexin的回答。 最后,我能够通过使用TXTParser来使用Tika,然后将所有粗体标签之间的段(这就是我的表的分离方式)放入一个arraylist中。 我不得不使用制表符分隔符从那里定义表。 这是无需根据选项卡提取表的代码(仍可以使用):

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.metadata.TikaCoreProperties;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.html.HtmlParser;
import org.apache.tika.parser.rtf.RTFParser;
import org.apache.tika.parser.txt.TXTParser;
import org.apache.tika.sax.BodyContentHandler;
import org.xml.sax.SAXException;


public class TextParser {
public static void main(final String[] args) throws IOException,TikaException{
 //detecting the file type
 BodyContentHandler handler = new BodyContentHandler(-1);
 Metadata metadata = new Metadata();

 FileInputStream inputstream = new FileInputStream(new File("/Users/mydoc.rtf"));
 ParseContext pcontext = new ParseContext();

 //Text document parser
 TXTParser TXTParser = new TXTParser();
 try {
     TXTParser.parse(inputstream, handler, metadata,pcontext);

} catch (SAXException e) {

    e.printStackTrace();
} 
 String s=handler.toString();

Pattern pattern = Pattern.compile("(\\\\b\\\\f1\\\\fs24.+?\\\\par .+?)\\\\b\\\\f1\\\\fs24.*?\\{\\\\",Pattern.DOTALL);

Matcher matcher = pattern.matcher(s);
ArrayList<String> arr= new ArrayList<String>();

while (matcher.find()) {
       arr.add(matcher.group(1));
     }

 for(String name : arr){
     System.out.println("The array number is: "+arr.indexOf(name)+" \n\n "+name);
 }

 }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM