我使用PDFbox解析该pdf文档。它抛出异常,说它无法找到标题版本信息。有什么想法吗?
我认为版本是1.3当我将每个字节转换为char时我看到了它。 链接是http://www.selab.isti.cnr.it/ws-mate/example.pdf
这里的方法和输出代码:
public String PDFtest(String textLink) throws IOException{
PDFParser parser;
String parsedText = null;
PDFTextStripper pdfStripper;
PDDocument pdDoc;
COSDocument cosDoc;
PDDocumentInformation pdDocInfo;
StringBuilder sd=new StringBuilder();
URL link;
try {
link = new URL(textLink);
URLConnection urlConn = link.openConnection();
BufferedInputStream in = null;
in = new BufferedInputStream(urlConn.getInputStream());
byte data[] = new byte[1024];
in.read(data, 0, 1024);
parser = new PDFParser(in);
parser.parse();
cosDoc = parser.getDocument();
pdfStripper = new PDFTextStripper();
pdDoc = new PDDocument(cosDoc);
parsedText = pdfStripper.getText(pdDoc);
} catch (MalformedURLException ex) {
Logger.getLogger(HTMLhelper.class.getName()).log(Level.SEVERE, null, ex);
}
catch (NumberFormatException e){
System.out.println("hata");
}
return parsedText;
}
例外:
Exception in thread "main" java.io.IOException: Error: Header doesn't contain versioninfo
at org.apache.pdfbox.pdfparser.PDFParser.parseHeader(PDFParser.java:317)
at org.apache.pdfbox.pdfparser.PDFParser.parse(PDFParser.java:173)
at ParsingMachine.HTMLhelper.PDFtest(HTMLhelper.java:99)
at ParsingMachine.tester.main(tester.java:18)
Java Result: 1
答案 0 :(得分:5)
您必须合并非pdf格式的文件。请仔细检查列表中是否有任何文件,然后是pdf。
答案 1 :(得分:2)
就我而言,我正在遍历目录中的文件。
Windows在任何目录中都有一个Thumbs.db
文件。
这干扰了pdf文件的过程。
应用过滤器仅选择PDF文件(*.pdf
)很有帮助。
干杯。
答案 2 :(得分:0)
首先将前导千字节数据读入字节数组:
in.read(data, 0, 1024);
然后你希望PDFBox与剩余字节相处
parser = new PDFParser(in);
parser.parse();
实际的PDF标头很可能包含在您从PDFBox解析器中保留的那些前导字节中。
因此,只需允许PDFBox读取所有数据。
答案 3 :(得分:0)
已解析的文件夹已过时。看起来是空的,因此默认为Thumbs.db。我记得专门跳过了此操作,但是当文件夹为空时不会猜测。
更新目录已固定。
(与murphy1310相似的情况,但目录为空,即此处没有PDF)