java 文件文档内容提取

tika进行文件文档内容提取

maven依赖:

    <!--    提取内容   -->
       <dependency>
            <groupId>org.apache.tika</groupId>
            <artifactId>tika-parsers</artifactId>
            <version>1.26</version>
        </dependency>

        <dependency>
            <groupId>org.apache.tika</groupId>
            <artifactId>tika-core</artifactId>
            <version>1.26</version>
        </dependency>

		  <!--  lombok      -->
   		<dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.30</version>
        </dependency>

工具类:

package com.ly.test.utils;

import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FileUtils;
import org.apache.tika.detect.EncodingDetector;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.AutoDetectParser;
import org.apache.tika.parser.txt.UniversalEncodingDetector;
import org.apache.tika.sax.BodyContentHandler;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;

/**
 * Tika
 *
 * 内容提取工具类
 *
 */
@Slf4j
public class TikaUtils {

    public static String parseContent(File f) {
        String content = null;
        try {
            InputStream stream = FileUtils.openInputStream(f);
            content = parseContent(stream);
            if (null == content || "".equals(content)) {
                content = parseTxt(f);
            }
            if (content != null) {
                return content;
            }
        } catch (Exception e) {
            log.error("tika parse error", e);
        }
        return content;
    }

    private static String parseTxt(File file) throws IOException {
        InputStream stream1 = FileUtils.openInputStream(file);
        EncodingDetector detector = new UniversalEncodingDetector();
        Charset charset = detector.detect(new BufferedInputStream(stream1), new Metadata());
        stream1.close();
        if (charset != null) {
            return FileUtils.readFileToString(file, charset);
        } else {
            return null;
        }
    }

    public static String parseContent(InputStream stream) {
        String content = null;
        try {
            AutoDetectParser parser = new AutoDetectParser();
            BodyContentHandler handler = new BodyContentHandler(Integer.MAX_VALUE);
            Metadata metadata = new Metadata();
            parser.parse(stream, handler, metadata);
            content = handler.toString();
        } catch (Exception e) {
            log.error("tika parse error", e);
        }
        return content;
    }
}

使用:

    @PostMapping("/insert")
    public String insert(MultipartFile file) throws Exception {
        String content = TikaUtils.parseContent(file.getInputStream());
        System.out.println(content);
      return content;
  }

测试md文件:
在这里插入图片描述

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用 Apache PDFBox 库来提取 PDF 文件中的内容。下面是一个简单的例子,演示如何使用 PDFBox 提取 PDF 文件中的文本内容: ```java import java.io.File; import java.io.IOException; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.text.PDFTextStripper; public class PdfBoxTest { public static void main(String[] args) throws IOException { // 加载 PDF 文件 PDDocument document = PDDocument.load(new File("test.pdf")); // 创建一个 PDFTextStripper 对象 PDFTextStripper stripper = new PDFTextStripper(); // 获取 PDF 文件文本内容 String text = stripper.getText(document); // 输出文本内容 System.out.println(text); // 关闭 PDF 文件 document.close(); } } ``` 运行该程序,可以得到 PDF 文件中的文本内容。 当然,如果需要提取 PDF 文件中的其它内容,比如图片、表格等,也可以使用 PDFBox 提供的相应工具类来实现。例如,使用 PDFBox 提取 PDF 文件中的图片,可以使用如下代码: ```java import java.io.File; import java.io.IOException; import java.util.List; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.rendering.PDFRenderer; public class PdfBoxTest { public static void main(String[] args) throws IOException { // 加载 PDF 文件 PDDocument document = PDDocument.load(new File("test.pdf")); // 创建 PDFRenderer 对象 PDFRenderer renderer = new PDFRenderer(document); // 获取 PDF 文件中的所有页面 List<PDPage> pages = document.getPages(); // 遍历所有页面,提取图片 for (int i = 0; i < pages.size(); i++) { PDPage page = pages.get(i); int pageNum = i + 1; String fileName = "page" + pageNum + ".png"; renderer.renderImageWithDPI(pageNum - 1, 300, fileName); } // 关闭 PDF 文件 document.close(); } } ``` 运行该程序,可以将 PDF 文件中的所有页面转换成 PNG 图片保存到本地。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值