Java 从';res/raw';或资产文件夹,以编程方式使用给定方法进行分析 以编程方式从“res/raw”或“assets”文件夹访问PDF文件,以使用给定方法进行解析 说明:

Java 从';res/raw';或资产文件夹,以编程方式使用给定方法进行分析 以编程方式从“res/raw”或“assets”文件夹访问PDF文件,以使用给定方法进行解析 说明:,java,android,pdf,android-resources,android-assets,Java,Android,Pdf,Android Resources,Android Assets,现在,该程序从文件管理器访问一个文件,该文件管理器采用选定的文件路径,并将其设置为“mFilename”EditText字段。下面的show PDF按钮侦听器显示字符串“PdfileName”被分配到“mFilename”EditText字段中包含的字符串。启动PdfViewerActivity,并将字符串“pdffilename”作为额外的字符串传递。在onCreate()中,检查意图是否为null。这就是我认为可以/应该做出改变的地方。字符串“pdffilename”被分配给您在下面看到的内

现在,该程序从文件管理器访问一个文件,该文件管理器采用选定的文件路径,并将其设置为“mFilename”EditText字段。下面的show PDF按钮侦听器显示字符串“PdfileName”被分配到“mFilename”EditText字段中包含的字符串。启动PdfViewerActivity,并将字符串“pdffilename”作为额外的字符串传递。在onCreate()中,检查意图是否为null。这就是我认为可以/应该做出改变的地方。字符串“pdffilename”被分配给您在下面看到的内容。我想做的是以两种方式之一存储PDF文件。。。在“res/raw/example_folder/example.pdf”或资产文件夹中输入。我想通过编程方式为“PdfileName”分配存储这些PDF文件的路径。我尝试过许多不同的方法,它们要么没有编译,要么导致错误,要么导致“file:res/raw/example\u folder/example.pdf不存在!”

所以基本上…

OnClickListener ShowPdfListener = new OnClickListener()
{
    public void onClick(View v)
    {
        mFilename = (EditText) findViewById(R.id.filename);
        String pdffilename = mFilename.getText().toString();
        Intent intent = new Intent(PdfFileSelectActivity.this,
        PdfViewerActivity.class)
        .putExtra(EXTRA_PDFFILENAME, pdffilename);
        startActivity(intent);
    }
};
Intent intent = getIntent();
 
if (intent != null)
{
    if ("android.intent.action.VIEW".equals(intent.getAction()))
    {
        pdffilename = storeUriContentToFile(intent.getData());
    }
    else {
        pdffilename = getIntent().getStringExtra(PdfFileSelectActivity.EXTRA_PDFFILENAME);
    }
}

if (pdffilename == null)
    pdffilename = "no file selected";

setContent(null);
private void setContent(String password)
{
    try {
        parsePDF(pdffilename, password);
    }
    catch (PDFAuthenticationFailureException e)
    {
        System.out.println("Password needed");
    }
}
    private void parsePDF(String filename, String password) throws PDFAuthenticationFailureException
    {
        long startTime = System.currentTimeMillis();
        try {
            File f = new File(filename);
            long len = f.length();
            if (len == 0) {
                mGraphView.showText("file '" + filename + "' not found");
            }
            else {
                mGraphView.showText("file '" + filename + "' has " + len + " bytes");
                openFile(f, password);
            }
        }
        catch (PDFAuthenticationFailureException e)
        {
            throw e;
        } catch (Throwable e) {
            e.printStackTrace();
            mGraphView.showText("Exception: "+e.getMessage());
        }
        long stopTime = System.currentTimeMillis();
        mGraphView.fileMillis = stopTime-startTime;

   }
OnClickListener ShowPdfListener = new OnClickListener() {
    public void onClick(View v)
    {
        Intent intent = new Intent(PdfFileSelectActivity.this,
        PdfViewerActivity.class);
        startActivity(intent);
    }
};
openFile2(readToByteBuffer(this.getAssets().open("test.pdf")), null);
  • 我想将PDF文件存储在'res/raw/folder\u example/example.PDF'或资产文件夹中
  • 我想从代码中访问这些文件,因为我不需要使用文件管理器
  • 不管怎么说,这将是最大的帮助,我对Java很在行,但我绝对不是一个超级明星,所以请解释一下你的代码
非常感谢您,我将随时回答您的评论并编辑此帖子。我希望这篇文章将有助于其他用户,所以我将张贴解决方案的代码。完成后。再次感谢你

在PdfileSelectActivity中显示PDF按钮侦听器…

OnClickListener ShowPdfListener = new OnClickListener()
{
    public void onClick(View v)
    {
        mFilename = (EditText) findViewById(R.id.filename);
        String pdffilename = mFilename.getText().toString();
        Intent intent = new Intent(PdfFileSelectActivity.this,
        PdfViewerActivity.class)
        .putExtra(EXTRA_PDFFILENAME, pdffilename);
        startActivity(intent);
    }
};
Intent intent = getIntent();
 
if (intent != null)
{
    if ("android.intent.action.VIEW".equals(intent.getAction()))
    {
        pdffilename = storeUriContentToFile(intent.getData());
    }
    else {
        pdffilename = getIntent().getStringExtra(PdfFileSelectActivity.EXTRA_PDFFILENAME);
    }
}

if (pdffilename == null)
    pdffilename = "no file selected";

setContent(null);
private void setContent(String password)
{
    try {
        parsePDF(pdffilename, password);
    }
    catch (PDFAuthenticationFailureException e)
    {
        System.out.println("Password needed");
    }
}
    private void parsePDF(String filename, String password) throws PDFAuthenticationFailureException
    {
        long startTime = System.currentTimeMillis();
        try {
            File f = new File(filename);
            long len = f.length();
            if (len == 0) {
                mGraphView.showText("file '" + filename + "' not found");
            }
            else {
                mGraphView.showText("file '" + filename + "' has " + len + " bytes");
                openFile(f, password);
            }
        }
        catch (PDFAuthenticationFailureException e)
        {
            throw e;
        } catch (Throwable e) {
            e.printStackTrace();
            mGraphView.showText("Exception: "+e.getMessage());
        }
        long stopTime = System.currentTimeMillis();
        mGraphView.fileMillis = stopTime-startTime;

   }
OnClickListener ShowPdfListener = new OnClickListener() {
    public void onClick(View v)
    {
        Intent intent = new Intent(PdfFileSelectActivity.this,
        PdfViewerActivity.class);
        startActivity(intent);
    }
};
openFile2(readToByteBuffer(this.getAssets().open("test.pdf")), null);
PdfViewerActivity的onCreate()从上面的show PDF Listener调用…

OnClickListener ShowPdfListener = new OnClickListener()
{
    public void onClick(View v)
    {
        mFilename = (EditText) findViewById(R.id.filename);
        String pdffilename = mFilename.getText().toString();
        Intent intent = new Intent(PdfFileSelectActivity.this,
        PdfViewerActivity.class)
        .putExtra(EXTRA_PDFFILENAME, pdffilename);
        startActivity(intent);
    }
};
Intent intent = getIntent();
 
if (intent != null)
{
    if ("android.intent.action.VIEW".equals(intent.getAction()))
    {
        pdffilename = storeUriContentToFile(intent.getData());
    }
    else {
        pdffilename = getIntent().getStringExtra(PdfFileSelectActivity.EXTRA_PDFFILENAME);
    }
}

if (pdffilename == null)
    pdffilename = "no file selected";

setContent(null);
private void setContent(String password)
{
    try {
        parsePDF(pdffilename, password);
    }
    catch (PDFAuthenticationFailureException e)
    {
        System.out.println("Password needed");
    }
}
    private void parsePDF(String filename, String password) throws PDFAuthenticationFailureException
    {
        long startTime = System.currentTimeMillis();
        try {
            File f = new File(filename);
            long len = f.length();
            if (len == 0) {
                mGraphView.showText("file '" + filename + "' not found");
            }
            else {
                mGraphView.showText("file '" + filename + "' has " + len + " bytes");
                openFile(f, password);
            }
        }
        catch (PDFAuthenticationFailureException e)
        {
            throw e;
        } catch (Throwable e) {
            e.printStackTrace();
            mGraphView.showText("Exception: "+e.getMessage());
        }
        long stopTime = System.currentTimeMillis();
        mGraphView.fileMillis = stopTime-startTime;

   }
OnClickListener ShowPdfListener = new OnClickListener() {
    public void onClick(View v)
    {
        Intent intent = new Intent(PdfFileSelectActivity.this,
        PdfViewerActivity.class);
        startActivity(intent);
    }
};
openFile2(readToByteBuffer(this.getAssets().open("test.pdf")), null);
setContent()从上面调用(如果需要).

OnClickListener ShowPdfListener = new OnClickListener()
{
    public void onClick(View v)
    {
        mFilename = (EditText) findViewById(R.id.filename);
        String pdffilename = mFilename.getText().toString();
        Intent intent = new Intent(PdfFileSelectActivity.this,
        PdfViewerActivity.class)
        .putExtra(EXTRA_PDFFILENAME, pdffilename);
        startActivity(intent);
    }
};
Intent intent = getIntent();
 
if (intent != null)
{
    if ("android.intent.action.VIEW".equals(intent.getAction()))
    {
        pdffilename = storeUriContentToFile(intent.getData());
    }
    else {
        pdffilename = getIntent().getStringExtra(PdfFileSelectActivity.EXTRA_PDFFILENAME);
    }
}

if (pdffilename == null)
    pdffilename = "no file selected";

setContent(null);
private void setContent(String password)
{
    try {
        parsePDF(pdffilename, password);
    }
    catch (PDFAuthenticationFailureException e)
    {
        System.out.println("Password needed");
    }
}
    private void parsePDF(String filename, String password) throws PDFAuthenticationFailureException
    {
        long startTime = System.currentTimeMillis();
        try {
            File f = new File(filename);
            long len = f.length();
            if (len == 0) {
                mGraphView.showText("file '" + filename + "' not found");
            }
            else {
                mGraphView.showText("file '" + filename + "' has " + len + " bytes");
                openFile(f, password);
            }
        }
        catch (PDFAuthenticationFailureException e)
        {
            throw e;
        } catch (Throwable e) {
            e.printStackTrace();
            mGraphView.showText("Exception: "+e.getMessage());
        }
        long stopTime = System.currentTimeMillis();
        mGraphView.fileMillis = stopTime-startTime;

   }
OnClickListener ShowPdfListener = new OnClickListener() {
    public void onClick(View v)
    {
        Intent intent = new Intent(PdfFileSelectActivity.this,
        PdfViewerActivity.class);
        startActivity(intent);
    }
};
openFile2(readToByteBuffer(this.getAssets().open("test.pdf")), null);
parsePDF()从上面调用(如果需要).

OnClickListener ShowPdfListener = new OnClickListener()
{
    public void onClick(View v)
    {
        mFilename = (EditText) findViewById(R.id.filename);
        String pdffilename = mFilename.getText().toString();
        Intent intent = new Intent(PdfFileSelectActivity.this,
        PdfViewerActivity.class)
        .putExtra(EXTRA_PDFFILENAME, pdffilename);
        startActivity(intent);
    }
};
Intent intent = getIntent();
 
if (intent != null)
{
    if ("android.intent.action.VIEW".equals(intent.getAction()))
    {
        pdffilename = storeUriContentToFile(intent.getData());
    }
    else {
        pdffilename = getIntent().getStringExtra(PdfFileSelectActivity.EXTRA_PDFFILENAME);
    }
}

if (pdffilename == null)
    pdffilename = "no file selected";

setContent(null);
private void setContent(String password)
{
    try {
        parsePDF(pdffilename, password);
    }
    catch (PDFAuthenticationFailureException e)
    {
        System.out.println("Password needed");
    }
}
    private void parsePDF(String filename, String password) throws PDFAuthenticationFailureException
    {
        long startTime = System.currentTimeMillis();
        try {
            File f = new File(filename);
            long len = f.length();
            if (len == 0) {
                mGraphView.showText("file '" + filename + "' not found");
            }
            else {
                mGraphView.showText("file '" + filename + "' has " + len + " bytes");
                openFile(f, password);
            }
        }
        catch (PDFAuthenticationFailureException e)
        {
            throw e;
        } catch (Throwable e) {
            e.printStackTrace();
            mGraphView.showText("Exception: "+e.getMessage());
        }
        long stopTime = System.currentTimeMillis();
        mGraphView.fileMillis = stopTime-startTime;

   }
OnClickListener ShowPdfListener = new OnClickListener() {
    public void onClick(View v)
    {
        Intent intent = new Intent(PdfFileSelectActivity.this,
        PdfViewerActivity.class);
        startActivity(intent);
    }
};
openFile2(readToByteBuffer(this.getAssets().open("test.pdf")), null);

再次感谢您

要将其作为来自资产的输入流进行访问,请执行以下操作:

in = new BufferedReader(new InputStreamReader(activity.getAssets().open(yourfile.pdf)));

经过几个小时和几次抽烟休息后,这里是解决办法。一旦readToByteBuffer返回ByteBuffer,就可以轻松地创建一个接收ByteBuffer的新Pdfile

享受

ShowPDF按钮侦听器…

OnClickListener ShowPdfListener = new OnClickListener()
{
    public void onClick(View v)
    {
        mFilename = (EditText) findViewById(R.id.filename);
        String pdffilename = mFilename.getText().toString();
        Intent intent = new Intent(PdfFileSelectActivity.this,
        PdfViewerActivity.class)
        .putExtra(EXTRA_PDFFILENAME, pdffilename);
        startActivity(intent);
    }
};
Intent intent = getIntent();
 
if (intent != null)
{
    if ("android.intent.action.VIEW".equals(intent.getAction()))
    {
        pdffilename = storeUriContentToFile(intent.getData());
    }
    else {
        pdffilename = getIntent().getStringExtra(PdfFileSelectActivity.EXTRA_PDFFILENAME);
    }
}

if (pdffilename == null)
    pdffilename = "no file selected";

setContent(null);
private void setContent(String password)
{
    try {
        parsePDF(pdffilename, password);
    }
    catch (PDFAuthenticationFailureException e)
    {
        System.out.println("Password needed");
    }
}
    private void parsePDF(String filename, String password) throws PDFAuthenticationFailureException
    {
        long startTime = System.currentTimeMillis();
        try {
            File f = new File(filename);
            long len = f.length();
            if (len == 0) {
                mGraphView.showText("file '" + filename + "' not found");
            }
            else {
                mGraphView.showText("file '" + filename + "' has " + len + " bytes");
                openFile(f, password);
            }
        }
        catch (PDFAuthenticationFailureException e)
        {
            throw e;
        } catch (Throwable e) {
            e.printStackTrace();
            mGraphView.showText("Exception: "+e.getMessage());
        }
        long stopTime = System.currentTimeMillis();
        mGraphView.fileMillis = stopTime-startTime;

   }
OnClickListener ShowPdfListener = new OnClickListener() {
    public void onClick(View v)
    {
        Intent intent = new Intent(PdfFileSelectActivity.this,
        PdfViewerActivity.class);
        startActivity(intent);
    }
};
openFile2(readToByteBuffer(this.getAssets().open("test.pdf")), null);
在onCreate()PdfViewerActivity中…

OnClickListener ShowPdfListener = new OnClickListener()
{
    public void onClick(View v)
    {
        mFilename = (EditText) findViewById(R.id.filename);
        String pdffilename = mFilename.getText().toString();
        Intent intent = new Intent(PdfFileSelectActivity.this,
        PdfViewerActivity.class)
        .putExtra(EXTRA_PDFFILENAME, pdffilename);
        startActivity(intent);
    }
};
Intent intent = getIntent();
 
if (intent != null)
{
    if ("android.intent.action.VIEW".equals(intent.getAction()))
    {
        pdffilename = storeUriContentToFile(intent.getData());
    }
    else {
        pdffilename = getIntent().getStringExtra(PdfFileSelectActivity.EXTRA_PDFFILENAME);
    }
}

if (pdffilename == null)
    pdffilename = "no file selected";

setContent(null);
private void setContent(String password)
{
    try {
        parsePDF(pdffilename, password);
    }
    catch (PDFAuthenticationFailureException e)
    {
        System.out.println("Password needed");
    }
}
    private void parsePDF(String filename, String password) throws PDFAuthenticationFailureException
    {
        long startTime = System.currentTimeMillis();
        try {
            File f = new File(filename);
            long len = f.length();
            if (len == 0) {
                mGraphView.showText("file '" + filename + "' not found");
            }
            else {
                mGraphView.showText("file '" + filename + "' has " + len + " bytes");
                openFile(f, password);
            }
        }
        catch (PDFAuthenticationFailureException e)
        {
            throw e;
        } catch (Throwable e) {
            e.printStackTrace();
            mGraphView.showText("Exception: "+e.getMessage());
        }
        long stopTime = System.currentTimeMillis();
        mGraphView.fileMillis = stopTime-startTime;

   }
OnClickListener ShowPdfListener = new OnClickListener() {
    public void onClick(View v)
    {
        Intent intent = new Intent(PdfFileSelectActivity.this,
        PdfViewerActivity.class);
        startActivity(intent);
    }
};
openFile2(readToByteBuffer(this.getAssets().open("test.pdf")), null);
从中编辑readToByteBuffer()


#您正在使用的PDF阅读器的常识?你在openFile2中做什么(readToByteBuffer(this.getAssets().open(“test.pdf”)),null);看起来他使用的是apv或Android PDF查看器:不过openFile2似乎是他自己的方法。我猜它需要一个ByteBuffer并以某种方式将其转换为一个PDFFile对象…我的意思是将ByteBuffer转换为一个PDFFile很容易,但我不知道他用它做了什么