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



我需要能够使用给定的 url 在线解析文件中包含的文本,即 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());
    }
}

您可以使用此代码先下载PDF文件,然后使用apache lib读取文本。 您需要手动添加一些 jar。您需要设置本地PDF文件地址,即通过明确的"下载.pdf"。

import com.gnostice.pdfone.PdfDocument;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.text.PDFTextStripper;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ConnectException;
import java.net.URL;
import java.net.URLConnection;

public class LoadDocumentFromURL {
public static void main(String[] args) throws IOException {
        URL url1 = new URL("https://arxiv.org/pdf/1811.06933.pdf");
        byte[] ba1 = new byte[1024];
        int baLength;
        FileOutputStream fos1 = new FileOutputStream("download.pdf");
        try {
            // Contacting the URL
            // System.out.print("Connecting to " + url1.toString() + " ... ");
            URLConnection urlConn = url1.openConnection();
            // Checking whether the URL contains a PDF
            if (!urlConn.getContentType().equalsIgnoreCase("application/pdf")) {
                System.out.println("FAILED.n[Sorry. This is not a PDF.]");
            } else {
                try {
                    // Read the PDF from the URL and save to a local file
                    InputStream is1 = url1.openStream();
                    while ((baLength = is1.read(ba1)) != -1) {
                        fos1.write(ba1, 0, baLength);
                    }
                    fos1.flush();
                    fos1.close();
                    is1.close();
                    // Load the PDF document and display its page count
                    //System.out.print("DONE.nProcessing the PDF ... ");
                    PdfDocument doc = new PdfDocument();
                    try {
                        doc.load("download.pdf");
                        // System.out.println("DONE.nNumber of pages in the PDF is " + doc.getPageCount());
                        // System.out.println(doc.getAuthor());
                        // System.out.println(doc.getKeywords());
                        // System.out.println(doc.toString());
                        doc.close();
                    } catch (Exception e) {
                        System.out.println("FAILED.n[" + e.getMessage() + "]");
                    }
                } catch (ConnectException ce) {
                    //System.out.println("FAILED.n[" + ce.getMessage() + "]n");
                }
            }
        } catch (NullPointerException npe) {
            //System.out.println("FAILED.n[" + npe.getMessage() + "]n");
        }
        File file = new File("your local pdf file address which is download.pdf");
        PDDocument document = PDDocument.load(file);
        PDFTextStripper pdfStripper = new PDFTextStripper();
        String text = pdfStripper.getText(document);
        System.out.println(text);
        document.close();
    }
}

相关内容

  • 没有找到相关文章

最新更新