AndroidPdfViewer icon indicating copy to clipboard operation
AndroidPdfViewer copied to clipboard

fromUri throwing FileNotFoundException: No content provider

Open abiemann opened this issue 7 years ago • 8 comments

what am I doing wrong?

I've got this method:

private void displayFromUrl(PDFView pdfView, String pdfUrl) { Uri uri = Uri.parse( pdfUrl ); pdfView.fromUri(uri) .defaultPage(0) .enableAnnotationRendering(true) .spacing(10) // in dp .load(); }

and when I call it with URL https://staging.jennylife.com/media/pdfs/MIB_Prenotice_CA.pdf

it comes back with:

08-29 22:21:33.671 E/PDFView: load pdf error java.io.FileNotFoundException: No content provider: https://staging.jennylife.com/media/pdfs/MIB_Prenotice_CA.pdf at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1135) at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:986) at android.content.ContentResolver.openFileDescriptor(ContentResolver.java:839) at android.content.ContentResolver.openFileDescriptor(ContentResolver.java:793) at com.github.barteksc.pdfviewer.source.UriSource.createDocument(UriSource.java:37) at com.github.barteksc.pdfviewer.DecodingAsyncTask.doInBackground(DecodingAsyncTask.java:53) at com.github.barteksc.pdfviewer.DecodingAsyncTask.doInBackground(DecodingAsyncTask.java:25) at android.os.AsyncTask$2.call(AsyncTask.java:305) at java.util.concurrent.FutureTask.run(FutureTask.java:237) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) at java.lang.Thread.run(Thread.java:761)

abiemann avatar Aug 29 '18 20:08 abiemann

Passing PDF from URI.

new RetrivePDFStream().execute(filePath);

class RetrivePDFStream extends AsyncTask<String, Void, InputStream> { @override protected InputStream doInBackground(String... strings) { InputStream inputStream = null; try { URL uri = new URL(strings[0]); HttpURLConnection urlConnection = (HttpURLConnection) uri.openConnection(); if (urlConnection.getResponseCode() == 200) { inputStream = new BufferedInputStream(urlConnection.getInputStream()); } } catch (IOException e) { return null; } return inputStream; } @override protected void onPostExecute(InputStream inputStream) { pdfView.fromStream(inputStream).password("Your Password").load(); } }

shaanvipul avatar Aug 31 '18 06:08 shaanvipul

Where u are saving ur pdf file

On Thu, 28 Feb 2019 at 8:56 PM IstrateAndrei [email protected] wrote:

@abiemann https://github.com/abiemann I have the same problem and I tried @shaanvipul https://github.com/shaanvipul 's solution but didn't work. Did it work for you?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/barteksc/AndroidPdfViewer/issues/671#issuecomment-468314722, or mute the thread https://github.com/notifications/unsubscribe-auth/ARK-7JgSldLeSoMoHweZNdmpfXGttM1rks5vR_VCgaJpZM4WSRPm .

shaanvipul avatar Feb 28 '19 15:02 shaanvipul

I'm facing the same issue on this project please suggest to me.

2019-10-09 14:50:21.711 16992-16992/com.github.barteksc.sample E/PDFView: load pdf error java.io.FileNotFoundException: No content provider: http://nwls.s3.amazonaws.com/temp/pdf/axmoore.pdf at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1580) at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:1431) at android.content.ContentResolver.openFileDescriptor(ContentResolver.java:1278) at android.content.ContentResolver.openFileDescriptor(ContentResolver.java:1232) at com.github.barteksc.pdfviewer.source.UriSource.createDocument(UriSource.java:37) at com.github.barteksc.pdfviewer.DecodingAsyncTask.doInBackground(DecodingAsyncTask.java:53) at com.github.barteksc.pdfviewer.DecodingAsyncTask.doInBackground(DecodingAsyncTask.java:27) at android.os.AsyncTask$2.call(AsyncTask.java:333) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at java.lang.Thread.run(Thread.java:764)

TulshiRamDewangan avatar Oct 09 '19 09:10 TulshiRamDewangan

  • 1

cyzaoj avatar Jun 02 '20 07:06 cyzaoj

so bad when can not run url pdf?

fukemy avatar Oct 18 '20 05:10 fukemy

This issue still exists on http and https urls. For kotlin users that do not want to have a separate class for loading the pdf, the below snippet can help you:

    private fun setPDF() {
        CoroutineScope(Job()).launch(Dispatchers.IO) {
            val pdfUrl = "<some url>"
            val url = URL(pdfUrl)
            val connection = url.openConnection() as HttpURLConnection
            if (connection.responseCode == 200) {
                val inputStream = BufferedInputStream(connection.inputStream)
                lifecycleScope.launch{
                    binding.pdfView.fromStream(inputStream)
                        .load()
                }
            }
        }
    }

mcanyucel avatar Jul 28 '22 08:07 mcanyucel

Este problema sigue existiendo en las direcciones URL http y https. Para los usuarios de kotlin que no desean tener una clase separada para cargar el pdf, el siguiente fragmento puede ayudarlo:

    private fun setPDF() {
        CoroutineScope(Job()).launch(Dispatchers.IO) {
            val pdfUrl = "<some url>"
            val url = URL(pdfUrl)
            val connection = url.openConnection() as HttpURLConnection
            if (connection.responseCode == 200) {
                val inputStream = BufferedInputStream(connection.inputStream)
                lifecycleScope.launch{
                    binding.pdfView.fromStream(inputStream)
                        .load()
                }
            }
        }
    }

me funcionó

jefelon avatar Jul 12 '23 22:07 jefelon

This issue still exists on http and https urls. For kotlin users that do not want to have a separate class for loading the pdf, the below snippet can help you:

    private fun setPDF() {
        CoroutineScope(Job()).launch(Dispatchers.IO) {
            val pdfUrl = "<some url>"
            val url = URL(pdfUrl)
            val connection = url.openConnection() as HttpURLConnection
            if (connection.responseCode == 200) {
                val inputStream = BufferedInputStream(connection.inputStream)
                lifecycleScope.launch{
                    binding.pdfView.fromStream(inputStream)
                        .load()
                }
            }
        }
    }

thanks for helping I resolve this with your help. @jefelon