【问题标题】:Pdf Extracting textpdf提取文本
【发布时间】:2018-10-07 09:52:29
【问题描述】:

我想在

中选择我的pdf文件的路径
private static final int DIALOG_LOAD_FILE = 1000;

我有两个按钮,一个用于获取 pdf 文件的路径,另一个用于提取文本:

Button b1 = (Button) x.findViewById(R.id.buttonStripText);
        Button button = (Button) x.findViewById(R.id.pick);
        button.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
                intent.setType("file/*");
                startActivityForResult(intent,DIALOG_LOAD_FILE);
            }
        });
        b1.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                stripText(v);
            }
        });

另外两个函数是

@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        switch(requestCode){
            case DIALOG_LOAD_FILE:
                if(resultCode==RESULT_OK){
                   fileName = data.getData().getPath();
                   System.out.println("Your File Name is:::"+fileName);
                }
                break;

        }
    }
    private void setup() {
        PDFBoxResourceLoader.init(getActivity().getApplicationContext());
        root = android.os.Environment.getExternalStorageDirectory();
        assetManager = getActivity().getAssets();
    }
    public void stripText(View v) {
        String parsedText = null;
        try {

            PDDocument document  = PDDocument.load(assetManager.open("cover_letter.pdf"));
            PDFTextStripper pdfStripper = new PDFTextStripper();
            pdfStripper.setStartPage(0);
            pdfStripper.setEndPage(1);
            parsedText = "Parsed text: " + pdfStripper.getText(document);
                if (document != null) document.close();
            } catch (Exception e) {
                e.printStackTrace();
            }

        tv.setText(parsedText);
    }

我没有抛出任何错误,但也没有得到提取的文本。 这种Dialog_Load_File打开谷歌驱动器,如果可能的话,告诉我如何打开内部存储! 任何帮助将不胜感激!

【问题讨论】:

  • 您没有使用fileName。那么这是关于什么的呢?
  • 我没有使用文件名,因为格式不像我想要的那样,例如Android.filepath....cover_letter.pdf,函数本身不起作用,cover_letter 在原始文件夹中,但它仍然没有提取文本
  • 我什至尝试String.getdirectory.R.raw.cover_letter 尝试该功能是否有效,但没有提取任何内容
  • 把它放在资产目录中,因为你的代码使用资产管理器。
  • 当然那个fileName是一个不存在的文件系统路径。

标签: android pdf intellij-idea pdfbox


【解决方案1】:
PDDocument document = PDDocument.load(assetManager.open("cover_letter.pdf"));
PDDocument document = PDDocument.load(... from any input stream .... ); 

因此,如果您可以从资产或原始文件或文件或 uri 打开输入流,您就完成了。

例如,如果你在 onActivityResult 中得到一个 uri

InputStream is = getContentResolver().openInputStream(data.getData());
PDDocument document = PDDocument.load( is ); 

【讨论】:

  • 点击按钮选择用户选择的pdf文件,但不是来自谷歌驱动器而是来自内部存储并将url传递给PDDocument document
  • 完美运行,但告诉我如何打开该死的内部存储而不是谷歌驱动器
  • 我不知道你在说什么。您是否使用了不同的意图?只需显示两个完整的网址。 Uri.toString() 值。
  • 没关系,当我点击按钮选择 PDF 时,它会打开谷歌驱动器。我想打开文件资源管理器
  • 不清楚。如果单击该按钮,用户可以选择一个文件。由用户决定他是否从内部存储或 sd 卡或画廊或保管箱或谷歌驱动器中选择文件。在调用 onActivityResult 选择之后。如您所说,尚不清楚何时打开谷歌驱动器。具体什么时候?在 onActivityResult?没有代码可以打开任何东西。你可以更好地解释发生了什么。
猜你喜欢
  • 1970-01-01
  • 2015-09-10
  • 2015-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-30
  • 1970-01-01
相关资源
最近更新 更多