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"