
package com.reactlibrary;

import android.graphics.Bitmap;
import android.graphics.pdf.PdfDocument;
import android.graphics.pdf.PdfRenderer;
import android.os.Environment;
import android.os.ParcelFileDescriptor;
import android.util.Base64;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.Callback;
import com.facebook.react.bridge.Promise;
public class RNReactNativePdftobase64imageModule extends ReactContextBaseJavaModule {

  private final ReactApplicationContext reactContext;

  public RNReactNativePdftobase64imageModule(ReactApplicationContext reactContext) {
    super(reactContext);
    this.reactContext = reactContext;
  }

  @ReactMethod
  public void convert(String nameFolder, String nameFile, Promise promise) {
    try {
      File f = new File(Environment.getExternalStorageDirectory() + "/"+ nameFolder +"/" + nameFile);
      if(f!=null){
        PdfRenderer pdfRenderer = new PdfRenderer(ParcelFileDescriptor.open(f, ParcelFileDescriptor.MODE_READ_ONLY));
        PdfRenderer.Page page = pdfRenderer.openPage(0);
        int w = page.getWidth();
        int h = page.getHeight();
        Bitmap bitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
        page.render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY);
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream);
        byte[] byteArray = byteArrayOutputStream .toByteArray();
        String encoded = Base64.encodeToString(byteArray, Base64.DEFAULT);
        promise.resolve(encoded);
        page.close();
        pdfRenderer.close();
        if(f.exists()){
          f.delete();
        }
      }
    } catch (IOException e) {
      promise.resolve(e);
    }
   
  }

  @Override
  public String getName() {
    return "RNReactNativePdftobase64image";
  }
}