cannot load page error
hi, i have problem when load some pdfs
i have recyclerview with multiple viewtypes, when i have 5 pdf view, the app crashed
java.lang.IllegalStateException: cannot load page
at android.graphics.pdf.PdfRenderer.nativeOpenPageAndGetSize(Native Method)
at android.graphics.pdf.PdfRenderer.access$300(PdfRenderer.java:105)
at android.graphics.pdf.PdfRenderer$Page.
this is my android code
class ReleasePdfViewHolder(binding: ItemPublishReleasePdfBinding) : BaseViewHolder<ItemPublishReleasePdfBinding>(binding), DownloadFile.Listener {
private lateinit var remotePDFViewPager: RemotePDFViewPager
private lateinit var adapterPdf: PDFPagerAdapter
private var listenerPdf : DownloadFile.Listener = this
fun bind(item: PublishView, listener: (publish: PublishView, viewType: PublishAdapter.InnerView) -> Unit){
binding.publish = item
binding.executePendingBindings()
if (item.file_type.equals("C", ignoreCase = true) && item.generic.equals("S", ignoreCase = true) && item.subtypePub.equals("P", ignoreCase = true)){
println("### LANZAR HOLDER VIEW PDF")
remotePDFViewPager = RemotePDFViewPager(binding.root.context,item.firstUrlImg,listenerPdf)
}
}
//TODO: CONFIG LAYOUT PDF
private fun setLayoutToPdf(){
binding.layoutPdfRoot.removeAllViews()
binding.layoutPdfRoot.addView(remotePDFViewPager)
}
override fun onSuccess(url: String?, destinationPath: String?) {
println("## ON SUCCESS PDF RUN")
adapterPdf = PDFPagerAdapter(binding.root.context, FileUtil.extractFileNameFromURL(url))
remotePDFViewPager.adapter = adapterPdf
setLayoutToPdf()
}
override fun onFailure(e: Exception?) {
e?.let {
it.printStackTrace()
}
}
override fun onProgressUpdate(progress: Int, total: Int) {
}
}
Hi!
it seems you have a RecyclerView with Pdf documents on each row. This can potentially lead to memory issues, as some Pdf documents are quite heavy to load in memory. If you load/unload them as the user scrolls, you may get OutOfMemory exceptions.
Anyway, it seems the PdfRenderer original component is failing to open one of your Pdfs.
- Have you tried opening such Pdf document in a single PdfViewPager, in an empty Activity?
- Have you tried opening a small, light Pdf document in every row of your RecyclerView?
when i load one by one , the pdf open perfect. one way to prevent the app crashing is add a try catch in PDFPageAdapter
try { PdfRenderer.Page page = getPDFPage(renderer, position); Bitmap bitmap = bitmapContainer.get(position); ssiv.setImage(ImageSource.bitmap(bitmap));
ssiv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
pageClickListener.onClick(v);
}
});
page.render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY);
page.close();
container.addView(v, 0);
}catch (Exception e){
System.out.println("### ERROR ### ");
}
``