How can I extract pages from pdf to bitmap image array

44 views Asked by At

I tride meny methods but they do nothing it don't run after feirst line of metod I used pdf rendere but when I run the method to extract pages it get errors fromthe first line

//this is the full code
package com.example.printrev;



public class Printact extends AppCompatActivity implements AdapterView.OnItemSelectedListener {
    Button sel,go;
    TextView t;
    EditText edtex;
    ImageView fpg;
    PdfRenderer renderer;
    public int md= 0;
    boolean is_selected = false;
    private  static final int PERMISSION_REQUEST_CODE = 7;
    int f=0;
    public String srct ;
   public int pgcount=0;
    public ArrayList<Bitmap> bitmaps = new ArrayList<>();
    @SuppressLint("MissingInflatedId")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_printact);

        fpg =(ImageView) findViewById(R.id.imageView2);
        edtex = (EditText) findViewById(R.id.editTextTextPersonName);
        sel = (Button) findViewById(R.id.pdf_selc);
        go = (Button) findViewById(R.id.go);
        t = (TextView) findViewById(R.id.pdfname);
        Spinner spinner = findViewById(R.id.spinner);
        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,R.array.selec, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);
        spinner.setOnItemSelectedListener(this);

        sel.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                f=0;
                if (!(ContextCompat.checkSelfPermission(Printact.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED)){
                    askPermission();
                }
                Intent intent = new Intent();
                intent.setType("application/pdf");
                intent.setAction(Intent.ACTION_GET_CONTENT);
                startActivityForResult(intent, 1);
            }
        });
        go.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                f=0;
                if (!(ContextCompat.checkSelfPermission(Printact.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED)){
                    askPermission();
                }

                Toast.makeText(Printact.this, "Arry bilded", Toast.LENGTH_SHORT).show();
                build();
            }
        });
    }

    private void build() {
        /*if(m==3){
        for(int x=0,x<pagcount;x++){
            if(x%2==1){
               front[x]=bitmapArry[]
            }else{

            }
        }else if (m==2){
            int i[]=[pagcount];
            int c=0
            String g= edtex.toString();
            int m=0;
            string h="";
            for(g:string s){
                if(s=="."){
                    if (m!=0){
                        for(int x=(m+1);x<=(h.toInt();x++){
                            i[c]=x;
                            c++;
                        }
                        h="";
                        m=0;
                    }
                    i[c]=h.toInt();
                    c++;
                    h="";

                }else if(s=="-"){
                    i[c]=h.toInt();
                    c++;
                    m=h.toInt();
                    h="";
                }else{
                    h+=s;
                }
            }
        }*/
        Toast.makeText(this, "Sub arry bulded", Toast.LENGTH_SHORT).show();
    }


    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == 1 && resultCode == RESULT_OK && data != null) {
            String pdfPath = data.getData().getPath();
            t.setText(pdfPath);
            srct = t.toString();

        }
        try {
            Toast.makeText(this, "fgfsgsf", Toast.LENGTH_SHORT).show();
            ParcelFileDescriptor parcelFileDescriptor = getContentResolver()
                    .openFileDescriptor(Uri.parse(srct),"s");
            renderer = new PdfRenderer(parcelFileDescriptor);
            pgcount = renderer.getPageCount();
            Toast.makeText(this, pgcount, Toast.LENGTH_SHORT).show();
            ArrayList<Bitmap> bitmaps = new ArrayList<>();
            if(renderer!=null){
            for(int x=0;x<pgcount;x++){
                PdfRenderer.Page page=renderer.openPage(x);
                Bitmap bitmap = Bitmap.createBitmap(page.getWidth(),page.getHeight(),Bitmap.Config.ARGB_8888);
                page.render(bitmap,null,null,PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY);
                bitmaps.add(bitmap);

            }}
            fpg.setImageBitmap(bitmaps.get(0));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }


    }





    @Override
    public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
        String m = adapterView.getItemAtPosition(i).toString();
        if (m !=""){is_selected = true;}
        if (is_selected) {
            switch (m) {
                case "Print":
                    md=1;
                    edtex.setVisibility(View.INVISIBLE);
                    break;
                case "Print selected pages":
                    md=2;
                    edtex.setVisibility(View.VISIBLE);
                    break;
                case "Print doble side":
                    md=3;
                    edtex.setVisibility(View.INVISIBLE);
                    break;
                default:
                    md=0;
                    break;
            }
        }

    }

    @Override
    public void onNothingSelected(AdapterView<?> adapterView) {

    }
    private void askPermission() {

        ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},PERMISSION_REQUEST_CODE);
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull @NotNull String[] permissions, @NonNull @NotNull int[] grantResults) {

        if (requestCode == PERMISSION_REQUEST_CODE)
        {
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                Toast.makeText(this, "permission Graneted", Toast.LENGTH_SHORT).show();
            }else
            {
                Toast.makeText(Printact.this,"Permission Denied",Toast.LENGTH_SHORT).show();
            }

        }

        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    }
}

//this is the method I used to extract pages try {

        ParcelFileDescriptor parcelFileDescriptor = getContentResolver()
                .openFileDescriptor(Uri.parse(srct),"s");//srct is pdf uri
        renderer = new PdfRenderer(parcelFileDescriptor);
        pgcount = renderer.getPageCount();
        Toast.makeText(this, pgcount, Toast.LENGTH_SHORT).show();
        ArrayList<Bitmap> bitmaps = new ArrayList<>();
        if(renderer!=null){
        for(int x=0;x<pgcount;x++){
            PdfRenderer.Page page=renderer.openPage(x);
            Bitmap bitmap = Bitmap.createBitmap(page.getWidth(),page.getHeight(),Bitmap.Config.ARGB_8888);
            page.render(bitmap,null,null,PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY);
            bitmaps.add(bitmap);

        }}
        fpg.setImageBitmap(bitmaps.get(0));
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }``
0

There are 0 answers