2016-07-21 25 views
2

別のテーブルのデータを含むPDFファイルからデータを抽出しようとしています& convert to excel。このlinkに基づいて私の必要性は多かれ少なかれ、私は抽出を行うためにPDFBOXの瓶を使用しています。Java - PDFからのデータ抽出に関する問題(PDFBox - 2.02)

私が最初にpdfの異なるテーブルからデータを抽出できるかどうかをテストするには、以下で指定されたコードを試してみてください。しかし、&はオブジェクトの参照が壊れているというエラーを出します。何を意味するのか分かりません。

pdf自体に問題があるかどうかを確認するには、https://online2pdf.com &でpdfファイルを正常に変換しているので、pdfファイルに問題はないと思います。

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) 

コード:

は、私が直面している問題は、&がPDF

エラーメッセージからデータを抽出するために何をすべきかについての入力を待つ明らかであるホープ

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(); } } 
+0

問題のPDFドキュメントを提供する必要があります。 –

+0

@ SetasignはPDF文書に財務情報が含まれているためです。私はそれを共有することはできません。しかし、私は抽出しようとしている情報を含んでいるサンプルを見ることができます(リンクからもダウンロードできます)。リンクは - > https://www.dropbox.com/s/g5iorxzvg92ye1i/Sample%20Contract.pdf?raw=1 – iCoder

+0

ファイルには「オブジェクト参照の破損」エラーが表示されません。ただし、フォントにはToUnicodeエントリがないため、テキスト抽出結果はありません。 Adobe Readerでコピーアンドペーストしてみてください。どちらも動作しません。私は、PDFの作成者が提供するサービスを提供するためにデータを抽出する人々を避けるため、これが意図的に行われたと考えています。 –

答えて

0

最後に、jar(PDFxStream)ファイルが見つかりました。この場合のPDFからのデータそれは有料版だが、それは他の有料のものを抽出することができなかった完全な情報を抽出することができます。

唯一のことは、文字列として抽出する&私はこの文字列を解析する必要があります&それから特定の情報を抽出します。

+0

問題を再現できるPDFを共有していた場合は、PDFBoxをベースにした解決策があると同時に、PDFBoxがすべて改善されている可能性があります。 – mkl

+0

@mkl私はあなたのことを理解しています。しかし、私の最初の投稿に記載されているように、実際に作業しているファイルには財務情報が含まれているため、同じファイルを共有することはできません。サンプルのリンクを提供しました。このリンクには、抽出する必要があるデータの代表的なデータが含まれています.PDFBoxを拡張すると素晴らしいものになります。 – iCoder

関連する問題