0

Java で .doc、.docx、.pdf ファイルを読み取り、処理しようとしています。Apache POI (doc、docx 用) およびApache PDFBox (pdf 用) ライブラリを使用して単一の文字列に変換します。
テキストボックスに遭遇するまでは問題なく動作します。フォーマットが次のような場合:

段落 1
テキストボックス 1
段落 2
テキストボックス 2
段落 3

次に、出力は次のようになります:
段落 1 テキストボックス 1 段落 2 テキストボックス 2 段落 3
しかし、私が得ている出力は:
段落 1 段落 2 段落 3 テキストボックス 1 テキストボックス2

テキストボックスが必要な場所、つまり段落の間にではなく、最後に追加されているようです。この問題は、doc ファイルと pdf ファイルの両方の場合に発生します。つまり、POI と PDFBox の両方のライブラリで同じ問題が発生しています。

PDFファイルを読み取るためのコードは次のとおりです。

    void pdf(文字列ファイル) は IOException をスローします {
        //ファイルの初期化
        ファイル myFile = 新しいファイル(ファイル);
        PDDocument pdDoc = null;
        試す {
            //PDF を読み込む
            pdDoc = PDDocument.load(myFile);
            //エクストラクタを作成
            PDFTextStripper pdf = new PDFTextStripper();
            //テキストを抽出
            出力 = pdf.getText(pdDoc);
        }
        最後に {
            if(pdDoc != null)
                //ドキュメントを閉じる
                pdDoc.close();
        }
    }

doc ファイルのコードは次のとおりです。

    void doc(String file) は FileNotFoundException、IOException {
        ファイル myFile = null;
        WordExtractor エクストラクタ = null ;
        //ファイルを初期化
        myFile = 新しいファイル(ファイル);
        //ファイル入力ストリームを作成
        FileInputStream fis=new FileInputStream(myFile.getAbsolutePath());
        //ドキュメントを開く
        HWPFDocument document=new HWPFDocument(fis);
        //エクストラクタを作成
        エクストラクタ = 新しい WordExtractor(ドキュメント);
        //ドキュメントからテキストを取得
        出力 = extractor.getText();
    }

4

2 に答える 2

3

PDFBox の場合は、次のようにします: pdf.setSortByPosition(true);

于 2012-10-06T01:58:29.390 に答える