Ich versuche, Daten aus einer PDF-Datei zu extrahieren, die Daten in separaten Tabellen enthält & in Excel konvertieren. Basierend auf dieser link wie meine Notwendigkeit mehr oder weniger das gleiche ist, verwende ich PDFBOX Glas, um die Extraktion zu tun.Java - Problem mit Datenextraktion aus PDF (PDFBox - 2.02)
Um zu testen, ob ich zuerst die Daten aus verschiedenen Tabellen in der PDF extrahieren kann, versucht mit dem unten angegebenen Code. Aber es extrahiert nicht & gibt einen Fehler, der korrupte Objektreferenz angibt, weiß nicht, was es bedeutet.
Um zu sehen, ob es ein Problem mit der PDF selbst gab, überprüfte ich mit https://online2pdf.com & es erfolgreich konvertiert die PDF-Datei zu Excel, so glaube ich, gibt es kein Problem mit der PDF-Datei.
Hoffe, dass die Frage, die ich stehen, ist klar & Eingänge warten auf das, was die Daten aus dem pdf getan werden muss, um extrahieren
Fehlermeldung:
2016-07-21 13:49:11 WARN BaseParser:682 - Corrupt object reference at offset 6371
2016-07-21 13:49:11 WARN BaseParser:682 - Corrupt object reference at offset 6373
java.io.IOException: Expected string 'null' but missed at character 'u' at offset 6376
at org.apache.pdfbox.pdfparser.BaseParser.readExpectedString(BaseParser.java:1017)
at org.apache.pdfbox.pdfparser.BaseParser.readExpectedString(BaseParser.java:1000)
at org.apache.pdfbox.pdfparser.BaseParser.parseDirObject(BaseParser.java:879)
at org.apache.pdfbox.pdfparser.BaseParser.parseCOSArray(BaseParser.java:651)
at org.apache.pdfbox.pdfparser.PDFStreamParser.parseNextToken(PDFStreamParser.java:175)
at org.apache.pdfbox.contentstream.PDFStreamEngine.processStreamOperators(PDFStreamEngine.java:479)
at org.apache.pdfbox.contentstream.PDFStreamEngine.processStream(PDFStreamEngine.java:446)
at org.apache.pdfbox.contentstream.PDFStreamEngine.processPage(PDFStreamEngine.java:149)
at org.apache.pdfbox.text.PDFTextStreamEngine.processPage(PDFTextStreamEngine.java:136)
at org.apache.pdfbox.text.PDFTextStripper.processPage(PDFTextStripper.java:391)
at org.apache.pdfbox.text.PDFTextStripper.processPages(PDFTextStripper.java:319)
at org.apache.pdfbox.text.PDFTextStripper.writeText(PDFTextStripper.java:266)
at org.apache.pdfbox.text.PDFTextStripper.getText(PDFTextStripper.java:227)
at main.Test.readPDF(Test.java:170)
at main.Test.main(Test.java:76)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
Code:
public static void main(String[] args){
try {
File filePDF = new File("C:\\test.pdf");
PDDocument document = PDDocument.load(filePDF);
PDFTextStripper s = new PDFTextStripper();
String content = s.getText(document);
System.out.println(content);
} catch (IOException e) {
e.printStackTrace();
}
}
Sie sollten das PDF-Dokument in Frage stellen. –
@Setasign, da das PDF-Dokument Finanzinformationen enthält. Ich werde das nicht teilen können. Sie können jedoch das Beispiel anschauen, das die Informationen enthält, die ich extrahieren möchte (kann auch über den Link heruntergeladen werden). Der Link ist -> https://www.dropbox.com/s/g5iorxzvg92ye1i/Sample%20Contract.pdf?raw=1 – iCoder
Die Datei bringt nicht den Fehler "Corrupt Object Reference". Es gibt jedoch kein Text-Extraktionsergebnis, da die Schriften keinen ToUnicode-Eintrag haben. Versuchen Sie Copy & Paste mit Adobe Reader, es wird auch nicht funktionieren. Ich vermute, dass dies absichtlich geschieht, um zu vermeiden, dass Menschen die Daten extrahieren, um Dienste bereitzustellen, die der Ersteller des PDFs ebenfalls anbietet. –