gpt4 book ai didi

java - 以编程方式访问 'res/raw' 或 Assets 文件夹中的 PDF 文件以使用给定方法进行解析

转载 作者:行者123 更新时间:2023-11-29 22:04:42 24 4
gpt4 key购买 nike

以编程方式访问“res/raw”或 Assets 文件夹中的 PDF 文件,以使用给定方法进行解析

说明:

现在这个程序从文件管理器访问一个文件,该文件管理器采用选定的文件路径并将其设置为“mFilename”EditText 字段。下面的显示 PDF 按钮监听器显示字符串“pdffilename”被分配了包含在“mFilename”EditText 字段中的字符串。 PdfViewerActivity 启动,字符串“pdffilename”作为 Extra 传递。在 onCreate() 中检查 Intent 是否为空。这是我认为可以/应该进行更改的地方。字符串 'pdffilename' 被分配了您在下面看到的内容。我想要做的是以两种方式之一存储 PDF 文件......在“res/raw/example_folder/example.pdf”或 Assets 文件夹中。我想以编程方式为“pdffilename”分配我存储这些 PDF 文件的路径。我尝试了很多不同的方法,所有这些方法都没有编译、导致错误或导致“文件:res/raw/example_folder/example.pdf 不存在!”。

基本上...

  • 我想将 PDF 文件存储在“res/raw/folder_example/example.pdf”或 Assets 文件夹中
  • 我想通过代码访问这些文件,因为我不需要使用文件管理器
  • 无论如何,解决这个问题将是最大的帮助,我的 Java 相当不错,但我绝不是 super 明星,所以请用您的代码解释一下

非常感谢您,我将随时待命回复评论并编辑这篇文章。我希望这篇文章对其他用户有所帮助,因此我将发布解决方案的代码。完成时。再次感谢!

在 PdfFileSelectActivity 中显示 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);
}
};

PdfViewerActivity 的 onCreate() 从上面的 show PDF Listener 调用...

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);

从上面调用的 setContent()(如果需要)...

private void setContent(String password)
{
try {
parsePDF(pdffilename, password);
}
catch (PDFAuthenticationFailureException e)
{
System.out.println("Password needed");
}
}

从上面调用的 parsePDF()(如果需要)...

    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;

}

再次感谢您!

最佳答案

将其作为 Assets 的输入流进行访问:

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

关于java - 以编程方式访问 'res/raw' 或 Assets 文件夹中的 PDF 文件以使用给定方法进行解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11020299/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com