Java使用iText和从PDF中提取

时间:2017-02-07 22:21:46

标签: java itext

我在此处遵循了一些关于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 ++的理解变得沉重

0 个答案:

没有答案