Java 在android中的assets/raw文件夹的文本视图中显示pdf

Java 在android中的assets/raw文件夹的文本视图中显示pdf,java,android,textview,Java,Android,Textview,我有两个活动,MainActivity.java和SampleActivity.java。我在资产文件夹中存储了一个.pdf文件。 我的第一个活动中有一个按钮。单击该按钮时,我希望pdf文件显示在SampleActivity.java的文本视图中。第二个活动还将有一个下载按钮来下载pdf文件 我不想使用webview或使用外部程序显示。 我试过使用.txt文件,它工作正常,但pdf文件不工作 有什么方法可以做到这一点吗 提前谢谢 我用于.txt的代码是 protected void onCrea

我有两个活动,MainActivity.java和SampleActivity.java。我在资产文件夹中存储了一个.pdf文件。 我的第一个活动中有一个按钮。单击该按钮时,我希望pdf文件显示在SampleActivity.java的文本视图中。第二个活动还将有一个下载按钮来下载pdf文件

我不想使用webview或使用外部程序显示。 我试过使用.txt文件,它工作正常,但pdf文件不工作

有什么方法可以做到这一点吗

提前谢谢

我用于.txt的代码是

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_sample);

    txt=(TextView) findViewById(R.id.textView1);

    try
    {
        InputStream is=getAssets().open("hello.txt");
        int size=is.available();
        byte[] buffer=new byte[size];
        is.read(buffer);
        is.close();

        String text=new String(buffer);

        txt.setText(text);
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }
单击该按钮时,我希望pdf文件显示在SampleActivity.java的文本视图中

这是不可能的<代码>文本视图无法呈现PDF

在安卓5.0+上,打印框架中有一些东西可以将PDF转换为图像,并着眼于打印预览。您应该能够使用
ImageView
,尽管我还没有玩过它。此外,目前,安卓5.0+占安卓设备的约10%

或者,欢迎您查找应用程序中包含的PDF渲染库

第二个活动还将有一个下载按钮来下载pdf文件

这是不可能的,因为您无法替换
assets/
中的PDF文件。资产在运行时是只读的。欢迎您将PDF文件下载到读/写位置,如内部存储。但是,您仍然无法在
文本视图中显示PDF文件

我试过使用.txt文件,它工作正常,但pdf文件不工作


除了上面提到的所有问题之外,PDF文件不是文本文件。它们是二进制文件。您无法将PDF读入
字符串

以下是您可以在Android的imageview中显示PDF(来自资产文件夹)内容的代码

私有void openPDF()引发IOException{

    //open file in assets


    File fileCopy = new File(getCacheDir(), "source_of_information.pdf");

    InputStream input = getAssets().open("source_of_information.pdf");
    FileOutputStream output = new FileOutputStream(fileCopy);

    byte[] buffer = new byte[1024];
    int size;
    // Copy the entire contents of the file
    while ((size = input.read(buffer)) != -1) {
        output.write(buffer, 0, size);
    }
    //Close the buffer
    input.close();
    output.close();

    // We get a page from the PDF doc by calling 'open'
    ParcelFileDescriptor fileDescriptor =
            ParcelFileDescriptor.open(fileCopy,
                    ParcelFileDescriptor.MODE_READ_ONLY);
    PdfRenderer mPdfRenderer = new PdfRenderer(fileDescriptor);
    PdfRenderer.Page mPdfPage = mPdfRenderer.openPage(0);

    // Create a new bitmap and render the page contents into it
    Bitmap bitmap = Bitmap.createBitmap(mPdfPage.getWidth(),
            mPdfPage.getHeight(),
            Bitmap.Config.ARGB_8888);
    mPdfPage.render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY);

    // Set the bitmap in the ImageView
    imageView.setImageBitmap(bitmap);
}

是否仍要在第二个活动中显示pdf文件如果不在文本视图中,至少在活动布局或imageView@wint:我在回答中谈到了这一点。让我用黑体字再试一次:在Android 5.0+上,打印框架中有一些东西可以将PDF转换为图像,着眼于打印预览。您应该能够为了让它与ImageView一起工作,尽管我还没有玩过它。另外,现在,Android 5.0+代表了大约10%的Android设备。或者,欢迎您找到应用程序中包含的PDF呈现库。除了webView和使用INTENT.ACTION\u VIEW之外,还有其他任何显示PDF文件的方法吗。@wint:我已经回答了两次,一次在回答中,以及在上述评论的黑体部分。如果你发现这是一种更适合你的语言,你会有更好的运气。这将帮助你。