从 PDF 中提取内容的Java程序
使用使用 Apache Tika< 库的Java class< 文件。对于各种文件格式的文档类型检测和内容提取,它使用各种文档解析器和文档类型检测技术来检测和提取数据。它提供了一个用于解析不同文件格式的通用 API。所有这些解析器库都封装在一个称为解析器接口的接口中。
Java支持多个内置类和包来提取和访问 PDF 文档中的内容。以下类用于提取内容:
BodyContentHandler is an in-built class that creates a handler for the text, which writes these XHTML body character events and stores them in an internal string buffer. It is inherited from the parent class ContentHandlerDecorator in Java. The specified text can be retrieved using the method ContentHandlerDecorator.toString() provided by the parent class.
PDFParser Java provides an in-built package that provides a class PDFParser, which parses the contents of PDF documents. It extracts the contents of a PDF Document stored within paragraphs, strings, and tables (without invoking tabular boundaries). It can be used to parse encrypted documents too if the password is specified as an argument.
ParseContext: This class is a component of the Java package org.apache.tika.parser, which is used to parse context and pass it on to the Tika parsers.
程序:
- 创建一个内容处理程序。
- 在系统的本地目录中创建一个 PDF 文件。
- 现在,创建一个与上述创建的 PDF 文件具有相同路径的 FileInputStream。
- 使用 PDF 文档的元数据类型对象创建内容解析器。
- PDF 文档现在使用 PDF 解析器类进行解析。
- 打印如上创建的 PDF 文档的内容,以说明上述 PDF 中内容的提取。
实现:以下Java程序用于说明从PDF文档中提取内容。
Java
// Java Program to Extract Content from a PDF
// Importing java input/output classes
import java.io.File;
import java.io.FileInputStream;
// Importing Apache POI classes
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.pdf.PDFParser;
import org.apache.tika.sax.BodyContentHandler;
// Class
public class GFG {
// Main driver method
public static void main(String[] args) throws Exception
{
// Create a content handler
BodyContentHandler contenthandler
= new BodyContentHandler();
// Create a file in local directory
File f = new File("C:/extractcontent.pdf");
// Create a file input stream
// on specified path with the created file
FileInputStream fstream = new FileInputStream(f);
// Create an object of type Metadata to use
Metadata data = new Metadata();
// Create a context parser for the pdf document
ParseContext context = new ParseContext();
// PDF document can be parsed using the PDFparser
// class
PDFParser pdfparser = new PDFParser();
// Method parse invoked on PDFParser class
pdfparser.parse(fstream, contenthandler, data,
context);
// Printing the contents of the pdf document
// using toString() method in java
System.out.println("Extracting contents :"
+ contenthandler.toString());
}
}
输出:以下是本地目录下的文件内容如下: