Skip to content Skip to sidebar Skip to footer

Android Pdfviewer / Fragment

417/5000 Hello I have a pdfview that works perfectly, for against it I can not add it to a fragment I use: implementation 'com.github.barteksc: android-pdf-viewer: 2.8.2' implemen

Solution 1:

  • I hope this help you

  • this code in Kotlin read PDF file from Assets folder

  • and display it in fragment

    classPdfRendererBasicFragment : Fragment(), View.OnClickListener {
    
    
           privateval FILENAME = "table.pdf"privateval STATE_CURRENT_PAGE_INDEX = "current_page_index"privateval TAG = "PdfRendererBasicFragment"privateval INITIAL_PAGE_INDEX = 0privatelateinitvar fileDescriptor: ParcelFileDescriptor
           privatelateinitvar pdfRenderer: PdfRenderer    
           privatelateinitvar currentPage: PdfRenderer.Page    
           privatelateinitvar imageView: ImageView   
           privatelateinitvar btnPrevious: Button
           privatelateinitvar btnNext: Button
           privatevar pageIndex: Int = INITIAL_PAGE_INDEX
           overridefunonCreateView(
               inflater: LayoutInflater,
                    container: ViewGroup?,
                          savedInstanceState: Bundle?
             ): View {
           return inflater.inflate(R.layout.fragment_pdf_renderer_basic, container, false)
             }
    
              overridefunonViewCreated(view: View, savedInstanceState: Bundle?) {
              super.onViewCreated(view, savedInstanceState)
              imageView = view.findViewById(R.id.image)
              btnPrevious = view.findViewById<Button>(R.id.previous).also {   it.setOnClickListener(this) }
              btnNext = view.findViewById<Button>(R.id.next).also {  it.setOnClickListener(this)}
    
            if (savedInstanceState != null) {
             pageIndex = savedInstanceState.getInt(STATE_CURRENT_PAGE_INDEX,   INITIAL_PAGE_INDEX)
             } else {
            pageIndex = INITIAL_PAGE_INDEX
             }
                }
    
            @SuppressLint("LongLogTag")overridefunonStart() {
                super.onStart()
                     try {
                         openRenderer(activity)
                                showPage(pageIndex)
                        } catch (e: IOException) {
                            Log.d(TAG, e.toString())
                      }
                        }
    
                    @SuppressLint("LongLogTag")overridefunonStop() {
                      try {
                        closeRenderer()
                     } catch (e: IOException) {
                        Log.d(TAG, e.toString())
                          }
                      super.onStop()
                            }
    
                  overridefunonSaveInstanceState(outState: Bundle) {
                      outState.putInt(STATE_CURRENT_PAGE_INDEX, currentPage.index)
                      super.onSaveInstanceState(outState)
                         }
    
    
                      @Throws(IOException::class)privatefunopenRenderer(context: Context?) {
                      if (context == null) returnval file = File(context.cacheDir, FILENAME)
                    if (!file.exists()) {
                    val asset = context.assets.open(FILENAME)
                    val output = FileOutputStream(file)
                    val buffer = ByteArray(1024)
                    var size = asset.read(buffer)
                    while (size != -1) {
                    output.write(buffer, 0, size)
                   size = asset.read(buffer)
                   }
                   asset.close()
                      output.close()
                     }
                fileDescriptor = ParcelFileDescriptor.open(file,        ParcelFileDescriptor.MODE_READ_ONLY)
    
                     pdfRenderer = PdfRenderer(fileDescriptor)
                      currentPage = pdfRenderer.openPage(pageIndex)
                       }
    
                       @Throws(IOException::class)privatefuncloseRenderer() {
                       currentPage.close()
                       pdfRenderer.close()
                        fileDescriptor.close()
                       }
    
                     privatefunshowPage(index: Int) {
                    if (pdfRenderer.pageCount <= index) return
    
    
                 currentPage.close()
    
                currentPage = pdfRenderer.openPage(index)
    
                val bitmap = createBitmap(currentPage.width, currentPage.height,           Bitmap.Config.ARGB_8888)
    
    
                currentPage.render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY)
               imageView.setImageBitmap(bitmap)
              updateUi()
                  }
                  privatefunupdateUi() {
                  val index = currentPage.index
                  val pageCount = pdfRenderer.pageCount
                 btnPrevious.isEnabled = (0 != index)
                btnNext.isEnabled = (index + 1 < pageCount)
    
                }
    
    
                 fungetPageCount() = pdfRenderer.pageCount
    
                 overridefunonClick(view: View) {
                when (view.id) {
                R.id.previous -> {
    
               showPage(currentPage.index - 1)
               }
                R.id.next -> {
                           showPage(currentPage.index + 1)
                  }
               }
              }
    
              }
    

Post a Comment for "Android Pdfviewer / Fragment"