【Apache Tika】在SpringBoot项目中实现文档解析

1.导入依赖

        <!-- https://mvnrepository.com/artifact/org.apache.tika/tika-core -->
        <dependency>
            <groupId>org.apache.tika</groupId>
            <artifactId>tika-core</artifactId>
            <version>1.27</version>
        </dependency>

        <dependency>
            <groupId>org.apache.tika</groupId>
            <artifactId>tika-parsers</artifactId>
            <version>1.27</version>
        </dependency>

2.测试代码(我读取的是.dat日志文件)

        //获取文件类型   返回-->  text/plain
        Tika tika = new Tika();
        String detect = tika.detect(targetFile);
        System.out.println("Type: "+detect);

        //解析文档内容   返回-->  xxxxx....
        InputStream input = new FileInputStream(targetFile);
        AutoDetectParser parser = new AutoDetectParser();

        //参数数字由文档大小决定
        BodyContentHandler handler = new BodyContentHandler(10 * 1024 * 1024); 
        Metadata metadata = new Metadata();
        parser.parse(input, handler, metadata, new ParseContext());
        System.out.println("Document content: " + handler.toString());

3.提醒

如果文档过大并且new BodyContentHandler();时没有指定参数,可能会报错:
org.apache.tika.sax.WriteOutContentHandler$WriteLimitReachedException: Your document contained more than 100000 characters, and so your requested limit has been reached. To receive the full text of the document, increase your limit. (Text up to the limit is however available).
根据错误信息提示,可能读取超过请求限制(10万字),因为我们没有指定参数导致使用了该对象的默认值。
所以我们在new BodyContentHandler(10 * 1024 * 1024);时指定参数大小,重新调试程序,即可获得元数据。

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Apache Tika可以通过使用OpenDesign Alliance的Teigha库来解析dwg文件的属性信息。Teigha库可以解析DWG文件的所有版本,包括最新的AutoCAD 2021格式。Tika使用Teigha库来提取DWG文件的元数据信息,例如作者,标题,关键字等等。您可以通过以下代码使用Tika解析DWG文件的元数据信息: ```java import org.apache.tika.metadata.Metadata; import org.apache.tika.parser.ParseContext; import org.apache.tika.parser.dwg.DWGParser; import org.apache.tika.sax.BodyContentHandler; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; public class DWGMetadataExtractor { public static void main(String[] args) throws Exception { File file = new File("example.dwg"); InputStream stream = new FileInputStream(file); BodyContentHandler handler = new BodyContentHandler(); Metadata metadata = new Metadata(); ParseContext parseContext = new ParseContext(); // Set up the DWG parser with Teigha library DWGParser dwgParser = new DWGParser(); dwgParser.setTeighaInitializationPath("/path/to/TeighaFileConverter"); // Parse the DWG file and extract metadata dwgParser.parse(stream, handler, metadata, parseContext); // Print the metadata String[] names = metadata.names(); for (String name : names) { System.out.println(name + ": " + metadata.get(name)); } } } ``` 在上面的代码,我们首先创建了一个`DWGParser`实例,并设置了Teigha库的初始化路径。然后,我们使用`DWGParser`解析DWG文件,并提取元数据信息。最后,我们遍历元数据信息,将其打印出来。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值