Skip to content

Fix PDF File corrupted exception#143

Open
sonique6784 wants to merge 1 commit intoJoanZapata:masterfrom
sonique6784:patch-2
Open

Fix PDF File corrupted exception#143
sonique6784 wants to merge 1 commit intoJoanZapata:masterfrom
sonique6784:patch-2

Conversation

@sonique6784
Copy link

Hi
this fix prevent the lib to crash on RuntimeException File corrupted.
it's a basic try - catch that set cancelled to true, to cancel the process.

here is the full trace:

java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:300)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
Caused by: java.lang.RuntimeException: PDF file is corrupted
at org.vudroid.pdfdroid.codec.PdfDocument.open(PdfDocument.java)
at org.vudroid.pdfdroid.codec.PdfDocument.openDocument(PdfDocument.java:28)
at org.vudroid.pdfdroid.codec.PdfContext.openDocument(PdfContext.java:18)
at org.vudroid.core.DecodeServiceBase.open(DecodeServiceBase.java:59)
at com.joanzapata.pdfview.DecodingAsyncTask.doInBackground(DecodingAsyncTask.java:52)
at com.joanzapata.pdfview.DecodingAsyncTask.doInBackground(DecodingAsyncTask.java:31)
at android.os.AsyncTask$2.call(AsyncTask.java:288)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)

Hi
this fix prevent the lib to crash on RuntimeException File corrupted.
it's a basic try - catch that set cancelled to true, to cancel the process.

here is the full trace:

java.lang.RuntimeException: An error occured while executing doInBackground()
       at android.os.AsyncTask$3.done(AsyncTask.java:300)
       at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
       at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
       at java.util.concurrent.FutureTask.run(FutureTask.java:242)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)
Caused by: java.lang.RuntimeException: PDF file is corrupted
       at org.vudroid.pdfdroid.codec.PdfDocument.open(PdfDocument.java)
       at org.vudroid.pdfdroid.codec.PdfDocument.openDocument(PdfDocument.java:28)
       at org.vudroid.pdfdroid.codec.PdfContext.openDocument(PdfContext.java:18)
       at org.vudroid.core.DecodeServiceBase.open(DecodeServiceBase.java:59)
       at com.joanzapata.pdfview.DecodingAsyncTask.doInBackground(DecodingAsyncTask.java:52)
       at com.joanzapata.pdfview.DecodingAsyncTask.doInBackground(DecodingAsyncTask.java:31)
       at android.os.AsyncTask$2.call(AsyncTask.java:288)
       at java.util.concurrent.FutureTask.run(FutureTask.java:237)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
       at java.lang.Thread.run(Thread.java:818)
@engmonsh
Copy link

engmonsh commented May 15, 2016

@JoanZapata is there any plan to merge this pull request? I really need that handle without import library explicity into the project cc @sonique6784

@bozapro
Copy link

bozapro commented May 23, 2016

👍

@kostyabakay
Copy link

@sonique6784 thanks for your solution.

@kostyabakay
Copy link

It will be better to add showing message for user.

@Override
    protected Void doInBackground(Void... params) {
        try {
            decodeService = new DecodeServiceBase(new PdfContext());
            decodeService.setContentResolver(pdfView.getContext().getContentResolver());
            decodeService.open(uri);
        } catch (Exception e){
            // Prevent  java.lang.RuntimeException: PDF file is corrupted
            this.cancelled = true;
            showErrorMessage(e.getMessage());
        }
        return null;
    }

private void showErrorMessage(final String message) {
     Handler handler =  new Handler(pdfView.getContext().getMainLooper());
     handler.post( new Runnable(){
         public void run(){
             Toast.makeText(pdfView.getContext(), message, Toast.LENGTH_LONG).show();
         }
     });
 }

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants