我在此处遵循了一些关于StackOverflow的建议(Extract specific parts of PDF documents)以从PDF中提取数据。我的编程经验有限,几乎没有Java(我年轻时使用C ++)。
在克服了一些通过构建路径提供正确的jar的新手难度之后,我遇到了似乎是一个定义问题。我希望这不是一个愚蠢的问题,我已经尝试了相当长的一段时间才能让它发挥作用。
这是我收到的错误:
线程“main”中的异常java.lang.Error:未解决的编译问题: 构造函数RegionTextRenderFilter(Rectangle)未定义 在PDFExtract.PDFExtract.parsePdf(PDFExtract.java:41) 在PDFExtract.PDFExtract.main(PDFExtract.java:59)
这是我的代码:
package PDFExtract;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.parser.FilteredTextRenderListener;
import com.itextpdf.text.pdf.parser.LocationTextExtractionStrategy;
import com.itextpdf.text.pdf.parser.PdfTextExtractor;
import com.itextpdf.text.pdf.parser.RegionTextRenderFilter;
import com.itextpdf.text.pdf.parser.RenderFilter;
import com.itextpdf.text.pdf.parser.TextExtractionStrategy;
public class PDFExtract {
/** The original PDF that will be parsed. */
public static final String PREFACE = "resources/pdfs/preface.pdf";
/** The resulting text file. */
public static final String RESULT = "results/output.txt";
/**
* Parses a specific area of a PDF to a plain text file.
* @param pdf the original PDF
* @param txt the resulting text
* @throws IOException
*/
public void parsePdf(String pdf, String txt) throws IOException {
PdfReader reader = new PdfReader(pdf);
PrintWriter out = new PrintWriter(new FileOutputStream(txt));
Rectangle rect = new Rectangle(70, 80, 420, 500);
RenderFilter filter = new RegionTextRenderFilter(rect);
TextExtractionStrategy strategy;
for (int i = 1; i <= reader.getNumberOfPages(); i++) {
strategy = new FilteredTextRenderListener(new LocationTextExtractionStrategy(), filter);
out.println(PdfTextExtractor.getTextFromPage(reader, i, strategy));
}
out.flush();
out.close();
reader.close();
}
/**
* Main method.
* @param args no arguments needed
* @throws DocumentException
* @throws IOException
*/
public static void main(String[] args) throws IOException, DocumentException {
new PDFExtract().parsePdf(PREFACE, RESULT);
}
}
此行显示错误“RenderFilter filter = new RegionTextRenderFilter(rect);”
希望有人可以帮助我!如果这是一个愚蠢的问题,我再次道歉。我尝试从一个Hello World跳到这个,这让我对C ++的理解变得沉重