Javaを使用してExcelで埋め込まれたPDFファイルを読む

ジェームズ・シャジ

私はJavaプログラミングに不慣れです。私の現在のプロジェクトでは、Excelシートの埋め込み(ole)ファイルを読み取り、その中のテキストコンテンツを取得する必要があります。埋め込まれたWordファイルを読み取る例は正常に機能しましたが、埋め込まれたpdfファイルを読み取るためのヘルプが見つかりません。同様の例を見て、いくつかのことを試しましたが、うまくいきませんでした。

http://poi.apache.org/spreadsheet/quick-guide.html#Embedded

私は以下のコードを持っています、おそらく私が正しい方向に進むことができる助けを借りて。私はApachePOIを使用して、Excelおよびpdfboxに埋め込まれたファイルを読み取り、pdfデータを解析しました。

public class ReadExcel1 {

public static void main(String[] args) {

    try {

        FileInputStream file = new FileInputStream(new File("C:\\test.xls"));

        POIFSFileSystem fs = new POIFSFileSystem(file);
        HSSFWorkbook workbook = new HSSFWorkbook(fs);

        for (HSSFObjectData obj : workbook.getAllEmbeddedObjects()) {

            String oleName = obj.getOLE2ClassName();

           if(oleName.equals("Acrobat Document")){
                System.out.println("Acrobat reader document");

                try{
                    DirectoryNode dn = (DirectoryNode) obj.getDirectory();
                    for (Iterator<Entry> entries = dn.getEntries(); entries.hasNext();) {

                        DocumentEntry nativeEntry = (DocumentEntry) dn.getEntry("CONTENTS");
                        byte[] data = new byte[nativeEntry.getSize()];

                        ByteArrayInputStream bao= new ByteArrayInputStream(data);
                        PDFParser pdfparser = new PDFParser(bao);

                        pdfparser.parse();
                        COSDocument cosDoc = pdfparser.getDocument();
                        PDFTextStripper pdfStripper = new PDFTextStripper();
                        PDDocument pdDoc = new PDDocument(cosDoc);
                        pdfStripper.setStartPage(1);
                        pdfStripper.setEndPage(2);
                        System.out.println("Text from the pdf "+pdfStripper.getText(pdDoc));
                    }
                }catch(Exception e){
                    System.out.println("Error reading "+ e.getMessage());
                }finally{
                    System.out.println("Finally ");
                }
            }else{
                System.out.println("nothing ");
            }
        }

        file.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

}

以下はEclipseでの出力です

Acrobat reader document

読み取りエラーエラー:ファイルの終わり、予想される行最後に何もありません

キウイウィング

PDFはOLE1.0でパッケージ化されていませんでしたが、どういうわけか異なって埋め込まれていました-少なくとも抽出は私にとってはうまくいきました。これは一般的な解決策ではありません。埋め込みアプリケーションがエントリに名前を付ける方法に依存するためです...もちろんPDFの場合は、すべてのDocumentNode-sでマジックナンバー "%PDF"を確認できます。OLE1.0パッケージ要素の場合は、これが必要です。別の方法で行う必要があります...

pdfの実際のファイル名は、\1OleまたはCompObjエントリのどこかに隠されていると思いますが、例として、そして明らかにあなたのユースケースのために、決定する必要はありません。

import java.io.*;
import java.net.URL;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.poifs.filesystem.*;
import org.apache.poi.util.IOUtils;

public class EmbeddedPdfInExcel {
    public static void main(String[] args) throws Exception {
        NPOIFSFileSystem fs = new NPOIFSFileSystem(new URL("http://jamesshaji.com/sample.xls").openStream());
        HSSFWorkbook wb = new HSSFWorkbook(fs.getRoot(), true);
        for (HSSFObjectData obj : wb.getAllEmbeddedObjects()) {
            String oleName = obj.getOLE2ClassName();
            DirectoryNode dn = (DirectoryNode)obj.getDirectory();
            if(oleName.contains("Acro") && dn.hasEntry("CONTENTS")){
                InputStream is = dn.createDocumentInputStream("CONTENTS");
                FileOutputStream fos = new FileOutputStream(obj.getDirectory().getName()+".pdf");
                IOUtils.copy(is, fos);
                fos.close();
                is.close();
            }
        }
        fs.close();
    }
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

埋め込まれたリストをファイルの行としてリストに書き込む

分類Dev

Sphinxでiframeを使用して外部htmlファイルを埋め込む

分類Dev

pyinstallerを使用してPythonで.wavファイルを埋め込む

分類Dev

完全な解析なしで埋め込まれたPDFファイルを抽出します

分類Dev

PDFファイルを最初から手動で作成して画像を埋め込む

分類Dev

XSendFileで送信されたPDFファイルをWebページに埋め込む際の問題

分類Dev

Pythonを使用して、埋め込まれたPDFファイルのダウンロードを自動化します

分類Dev

Sandcastlesを使用してCHMヘルプファイルに画像を埋め込む

分類Dev

Apache POIを使用してExcelのXSSFシートにファイルを埋め込む

分類Dev

StringTokenizerを使用してファイルをJavaに読み込む

分類Dev

CipherRSAを使用して暗号化されたPDFファイルを書き込む

分類Dev

Pythonを使用してhtmlをhtmlファイルに埋め込む方法

分類Dev

Javaに埋め込まれたneo4jでcsvファイルをロードします

分類Dev

このXSLファイルを解析し、HTMLファイルに埋め込まれた要素を読み取るにはどうすればよいですか。

分類Dev

CodeIgniterとmPDFライブラリを使用して埋め込みPDFファイルを生成します

分類Dev

埋め込まれたPDFファイルをダウンロードする

分類Dev

ローカルファイルでHTML5を使用してビデオを埋め込む方法

分類Dev

POIを使用してExcelから埋め込まれたファイルをエクスポートする方法は?

分類Dev

ファイルに書き込めません。Fileクラスを使用してJavaで作成されました

分類Dev

プレビューでPDFファイルに埋め込まれたフォントのリストを表示

分類Dev

C ++を使用して1行ずつdouble値で作成されたファイルを読み込む方法

分類Dev

フォントの埋め込みを変更することにより、matplotlibを使用して作成されたPDFのファイルサイズを縮小

分類Dev

HTMLの入力ファイル要素を介して開かれたPDFの埋め込み

分類Dev

PDFファイルをChromeに埋め込む

分類Dev

ロックされたセルを使用してExcelファイルをRに読み込みます

分類Dev

Ruby on Rails3を使用してlibmysql.dllファイルを読み込めませんでした

分類Dev

JavaScriptを使用してリッチフォーマットされたテキストファイルをHTMLに埋め込む

分類Dev

以下に添付されているExcel画像ファイルを読むためにパンダを使用しています

分類Dev

埋め込まれたcrc32を含むすべてのファイルを見つけるにはどうすればよいですか?

Related 関連記事

  1. 1

    埋め込まれたリストをファイルの行としてリストに書き込む

  2. 2

    Sphinxでiframeを使用して外部htmlファイルを埋め込む

  3. 3

    pyinstallerを使用してPythonで.wavファイルを埋め込む

  4. 4

    完全な解析なしで埋め込まれたPDFファイルを抽出します

  5. 5

    PDFファイルを最初から手動で作成して画像を埋め込む

  6. 6

    XSendFileで送信されたPDFファイルをWebページに埋め込む際の問題

  7. 7

    Pythonを使用して、埋め込まれたPDFファイルのダウンロードを自動化します

  8. 8

    Sandcastlesを使用してCHMヘルプファイルに画像を埋め込む

  9. 9

    Apache POIを使用してExcelのXSSFシートにファイルを埋め込む

  10. 10

    StringTokenizerを使用してファイルをJavaに読み込む

  11. 11

    CipherRSAを使用して暗号化されたPDFファイルを書き込む

  12. 12

    Pythonを使用してhtmlをhtmlファイルに埋め込む方法

  13. 13

    Javaに埋め込まれたneo4jでcsvファイルをロードします

  14. 14

    このXSLファイルを解析し、HTMLファイルに埋め込まれた要素を読み取るにはどうすればよいですか。

  15. 15

    CodeIgniterとmPDFライブラリを使用して埋め込みPDFファイルを生成します

  16. 16

    埋め込まれたPDFファイルをダウンロードする

  17. 17

    ローカルファイルでHTML5を使用してビデオを埋め込む方法

  18. 18

    POIを使用してExcelから埋め込まれたファイルをエクスポートする方法は?

  19. 19

    ファイルに書き込めません。Fileクラスを使用してJavaで作成されました

  20. 20

    プレビューでPDFファイルに埋め込まれたフォントのリストを表示

  21. 21

    C ++を使用して1行ずつdouble値で作成されたファイルを読み込む方法

  22. 22

    フォントの埋め込みを変更することにより、matplotlibを使用して作成されたPDFのファイルサイズを縮小

  23. 23

    HTMLの入力ファイル要素を介して開かれたPDFの埋め込み

  24. 24

    PDFファイルをChromeに埋め込む

  25. 25

    ロックされたセルを使用してExcelファイルをRに読み込みます

  26. 26

    Ruby on Rails3を使用してlibmysql.dllファイルを読み込めませんでした

  27. 27

    JavaScriptを使用してリッチフォーマットされたテキストファイルをHTMLに埋め込む

  28. 28

    以下に添付されているExcel画像ファイルを読むためにパンダを使用しています

  29. 29

    埋め込まれたcrc32を含むすべてのファイルを見つけるにはどうすればよいですか?

ホットタグ

アーカイブ