java - 从 URL 解析 Pdf、txt 或 docx 文件中的文本,无需在 Java 8 中下载

标签 java parsing pdf stream jsoup

我需要能够使用给定的网址解析在线文件中包含的文本,即http://website.com/document.pdf

我正在制作一个搜索引擎,它基本上可以告诉我搜索到的单词是否在某个在线文件中,并检索该文件的 URL,因此我不需要下载该文件而只需阅读它。

我一直在寻找一种方法,并发现了一些带有 InputStreamOpenConnection 的东西,但并没有真正做到。

我正在使用 jsoup 来爬行网站以检索 URL,并且我尝试使用 Jsoup 方法解析它,但它不起作用。

那么最好的方法是什么?

编辑:

我希望能够做这样的事情:

File in = new File("http://website.com/document.pdf");
Document doc = Jsoup.parse(in, "UTF-8");
System.out.println(doc.toString());

最佳答案

您可以使用 URL 而不是文件来访问 URL。因此,使用 Apache Tika,您应该能够以这种方式获取内容的字符串。

import org.apache.tika.parser.pdf.PDFParser;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.sax.BodyContentHandler;
import org.xml.sax.ContentHandler;

public class URLReader {
    public static void main(String[] args) throws Exception {

        URL url = new URL("http://website.com/document.pdf");
        ContentHandler contenthandler = new BodyContentHandler();
        Metadata metadata = new Metadata();
        PDFParser pdfparser = new PDFParser();
        pdfparser.parse(is, contenthandler, metadata, new ParseContext());

        System.out.println(contenthandler.toString());
    }
}

关于java - 从 URL 解析 Pdf、txt 或 docx 文件中的文本,无需在 Java 8 中下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29998020/

相关文章:

java - 集合上多个属性同时匹配

java - Lamport的逻辑时钟实现

java - 解析属性文件

linux - 将多个 PDF 文件合并/转换为一个 PDF

java - 使用 ESIG/DSS 向 PDF 添加带有可见时间戳和原因字段的数字签名

java - 一对多级联保存,错误 : null value in column "b_id" violates not-null constraint

java.lang.IllegalAccessException : Can not call newInstance() on the Class for java. lang.Class

python - 将文本文件内容解析为Python对象并将对象写回到可解析的文本文件中

Java 和正则表达式

python - 识别并提取 PDF 文档的特定部分