使用PDFbox存储库的代码中未定义的构造函数

时间:2016-11-20 20:35:14

标签: java maven pdfbox

这是我第一次使用Maven存储库,如果它是一个简单的解决方案,那么道歉。

我的代码如下:

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;

import org.apache.pdfbox.cos.COSDocument;
import org.apache.pdfbox.io.RandomAccessRead;
import org.apache.pdfbox.pdfparser.PDFParser;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.text.PDFTextStripper;

public class application {

public static void main(String args[]) {
    PDFTextStripper pdfStripper = null;
    PDDocument pdDoc = null;
    COSDocument cosDoc = null;
    File file = new File("/Users/Desktop/Corporate reports/previous 'fetch' items/ARM2009.pdf");
    try {
        PDFParser parser = new PDFParser(new FileInputStream(file));
        parser.parse();
        cosDoc = parser.getDocument();
        pdfStripper = new PDFTextStripper();
        pdDoc = new PDDocument(cosDoc);
        pdfStripper.setStartPage(1);
        pdfStripper.setEndPage(5);
        String parsedText = pdfStripper.getText(pdDoc);
        System.out.println(parsedText);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        System.out.println("Failed to parse : " +file);
    } 
}

}

基本上,第19行说:

PDFParser parser = new PDFParser(new FileInputStream(file));

在编译时发出错误。它说:

构造函数PDFParser(FileInputStream)是  未定义

我不知道如何处理这个问题。我的IDE建议将参数强制转换为RandomAccessRead,但这只会在运行时以不同的错误

结束

请帮助谢谢。

1 个答案:

答案 0 :(得分:0)

如果您比较pdfbox v2v1.8中的pdfparser的javadoc,您会注意到构造函数定义已从

更改
PDFParser(InputStream input)

PDFParser(RandomAccessRead source)

因此请确保从maven引用正确的版本。如果您打算坚持使用版本2,请确保使用RandomAccessFile之类的内容,而不是FileInputStream。