Welcome to the .NET MAUI feedback portal. We’re happy you’re here! If you have feedback on how to improve the .NET MAUI, we’d love to hear it!

  • Check out the features or bugs others have reported and vote on your favorites. Feedback will be prioritized based on popularity.
  • If you have feedback that’s not listed yet, submit your own.

Thanks for joining our community and helping improve Syncfusion products!

1
Vote

Hi,

There is a pretty rare crash that happens when we try to change the ZoomFactor of the PdfViewer on Android.

I have included a sample project that reproduces this issue. In this project, I reset the ZoomFactor when the phone's orientation changes.

I think the issue happens more often when we try to load a bigger PDF, but I'm not sure.

In case you are unable to replicate this issue, here is the callstack :


[mono-rt] [ERROR] FATAL UNHANDLED EXCEPTION: Java.Lang.IllegalStateException: Current page not closed
[mono-rt]    at Java.Interop.JniEnvironment.InstanceMethods.CallObjectMethod(JniObjectReference instance, JniMethodInfo method, JniArgumentValue* args) in /Users/runner/work/1/s/xamarin-android/external/Java.Interop/src/Java.Interop/obj/Release/net7.0/JniEnvironment.g.cs:line 19992
[mono-rt]    at Java.Interop.JniPeerMembers.JniInstanceMethods.InvokeAbstractObjectMethod(String encodedMember, IJavaPeerable self, JniArgumentValue* parameters) in /Users/runner/work/1/s/xamarin-android/external/Java.Interop/src/Java.Interop/Java.Interop/JniPeerMembers.JniInstanceMethods_Invoke.cs:line 848
[mono-rt]    at Android.Graphics.Pdf.PdfRenderer.OpenPage(Int32 index) in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/obj/Release/net8.0/android-34/mcw/Android.Graphics.Pdf.PdfRenderer.cs:line 213
[mono-rt]    at Syncfusion.Maui.PdfToImageConverter.PdfToImageConverter.d__27.MoveNext()
[mono-rt]    at Syncfusion.Maui.PdfToImageConverter.PdfToImageConverter.ConvertAsync(Int32 pageIndex, Size size, Single scaleFactor, CancellationToken cancellationToken)
[mono-rt]    at Syncfusion.Maui.PdfViewer.PdfPageContentManager.GetPageAsync(Int32 pageIndex, Size size, Double zoomFactor, CancellationToken cancellationToken)
[mono-rt]    at Syncfusion.Maui.PdfViewer.PdfPageView.GetContentViewAsync(Rect bounds, Double zoomFactor)
[mono-rt]    at Syncfusion.Maui.PdfViewer.PdfPageView.RenderContent()
[mono-rt]    at System.Threading.Tasks.Task.<>c.b__128_0(Object state)
[mono-rt]    at Android.App.SyncContext.<>c__DisplayClass2_0.b__0() in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Android.App/SyncContext.cs:line 36
[mono-rt]    at Java.Lang.Thread.RunnableImplementor.Run() in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Java.Lang/Thread.cs:line 36
[mono-rt]    at Java.Lang.IRunnableInvoker.n_Run(IntPtr jnienv, IntPtr native__this) in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/obj/Release/net8.0/android-34/mcw/Java.Lang.IRunnable.cs:line 84
[mono-rt]    at Android.Runtime.JNINativeWrapper.Wrap_JniMarshal_PP_V(_JniMarshal_PP_V callback, IntPtr jnienv, IntPtr klazz) in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Android.Runtime/JNINativeWrapper.g.cs:line 26
[mono-rt]   --- End of managed Java.Lang.IllegalStateException stack trace ---
[mono-rt] java.lang.IllegalStateException: Current page not closed
[mono-rt] 	at android.graphics.pdf.PdfRenderer.throwIfPageOpened(PdfRenderer.java:278)
[mono-rt] 	at android.graphics.pdf.PdfRenderer.openPage(PdfRenderer.java:230)
[mono-rt] 	at mono.android.view.View_OnLayoutChangeListenerImplementor.n_onLayoutChange(Native Method)
[mono-rt] 	at mono.android.view.View_OnLayoutChangeListenerImplementor.onLayoutChange(View_OnLayoutChangeListenerImplementor.java:31)
[mono-rt] 	at android.view.View.layout(View.java:22866)
[mono-rt] 	at android.view.ViewGroup.layout(ViewGroup.java:6389)
[mono-rt] 	at crc6486af4e8104107bae.LayoutViewGroupExt.n_onLayout(Native Method)
[mono-rt] 	at crc6486af4e8104107bae.LayoutViewGroupExt.onLayout(LayoutViewGroupExt.java:84)
[mono-rt] 	at android.view.View.layout(View.java:22848)
[mono-rt] 	at android.view.ViewGroup.layout(ViewGroup.java:6389)
[mono-rt] 	at crc6452ffdc5b34af3a0f.LayoutViewGroup.n_onLayout(Native Method)
[mono-rt] 	at crc6452ffdc5b34af3a0f.LayoutViewGroup.onLayout(LayoutViewGroup.java:67)
[mono-rt] 	at android.view.View.layout(View.java:22848)
[mono-rt] 	at android.view.ViewGroup.layout(ViewGroup.java:6389)
[mono-rt] 	at crc6452ffdc5b34af3a0f.ContentViewGroup.n_onLayout(Native Method)
[mono-rt] 	at crc6452ffdc5b34af3a0f.ContentViewGroup.onLayout(ContentViewGroup.java:67)
[mono-rt] 	at android.view.View.layout(View.java:22848)
[mono-rt] 	at android.view.ViewGroup.layout(ViewGroup.java:6389)
[mono-rt] 	at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
[mono-rt] 	at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
[mono-rt] 	at android.view.View.layout(View.java:22848)
[mono-rt] 	at android.view.ViewGroup.layout(ViewGroup.java:6389)
[mono-rt] 	at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
[mono-rt] 	at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
[mono-rt] 	at android.view.View.layout(View.java:22848)
[mono-rt] 	at android.view.ViewGroup.layout(ViewGroup.java:6389)
[mono-rt] 	at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
[mono-rt] 	at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
[mono-rt] 	at android.view.View.layout(View.java:22848)
[mono-rt] 	at android.view.ViewGroup.layout(ViewGroup.java:6389)
[mono-rt] 	at com.google.android.material.appbar.HeaderScrollingViewBehavior.layoutChild(HeaderScrollingViewBehavior.java:149)
[mono-rt] 	at com.google.android.material.appbar.ViewOffsetBehavior.onLayoutChild(ViewOffsetBehavior.java:43)
[mono-rt] 	at com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior.onLayoutChild(AppBarLayout.java:2376)
[mono-rt] 	at androidx.coordinatorlayout.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:953)
[mono-rt] 	at android.view.View.layout(View.java:22848)
[mono-rt] 	at android.view.ViewGroup.layout(ViewGroup.java:6389)
[mono-rt] 	at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
[mono-rt] 	at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
[mono-rt] 	at android.view.View.layout(View.java:22848)
[mono-rt] 	at android.view.ViewGroup.layout(ViewGroup.java:6389)
[mono-rt] 	at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1829)
[mono-rt] 	at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1673)
[mono-rt] 	at android.widget.LinearLayout.onLayout(LinearLayout.java:1582)
[mono-rt] 	at android.view.View.layout(View.java:22848)
[mono-rt] 	at android.view.ViewGroup.layout(ViewGroup.java:6389)
[mono-rt] 	at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
[mono-rt] 	at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
[mono-rt] 	at android.view.View.layout(View.java:22848)
[mono-rt] 	at android.view.ViewGroup.layout(ViewGroup.java:6389)
[mono-rt] 	at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1829)
[mono-rt] 	at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1673)
[mono-rt] 	at android.widget.LinearLayout.onLayout(LinearLayout.java:1582)
[mono-rt] 	at android.view.View.layout(View.java:22848)
[mono-rt] 	at android.view.ViewGroup.layout(ViewGroup.java:6389)
[mono-rt] 	at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
[mono-rt] 	at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
[mono-rt] 	at com.android.internal.policy.DecorView.onLayout(DecorView.java:784)
[mono-rt] 	at android.view.View.layout(View.java:22848)
[mono-rt] 	at android.view.ViewGroup.layout(ViewGroup.java:6389)
[mono-rt] 	at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:3478)
[mono-rt] 	at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2946)
[mono-rt] 	at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1951)
[mono-rt] 	at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8187)
[mono-rt] 	at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1056)
[mono-rt] 	at android.view.Choreographer.doCallbacks(Choreographer.java:878)
[mono-rt] 	at android.view.Choreographer.doFrame(Choreographer.java:811)
[mono-rt] 	at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1041)
[mono-rt] 	at android.os.Handler.handleCallback(Handler.java:938)
[mono-rt] 	at android.os.Handler.dispatchMessage(Handler.java:99)
[mono-rt] 	at android.os.Looper.loop(Looper.java:223)
[mono-rt] 	at android.app.ActivityThread.main(ActivityThread.java:7705)
[mono-rt] 	at java.lang.reflect.Method.invoke(Native Method)
[mono-rt] 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
[mono-rt] 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:952)
[mono-rt]
[mono-rt]   --- End of managed Java.Lang.IllegalStateException stack trace ---
[mono-rt] java.lang.IllegalStateException: Current page not closed
[mono-rt] 	at android.graphics.pdf.PdfRenderer.throwIfPageOpened(PdfRenderer.java:278)
[mono-rt] 	at android.graphics.pdf.PdfRenderer.openPage(PdfRenderer.java:230)
[mono-rt] 	at mono.android.view.View_OnLayoutChangeListenerImplementor.n_onLayoutChange(Native Method)
[mono-rt] 	at mono.android.view.View_OnLayoutChangeListenerImplementor.onLayoutChange(View_OnLayoutChangeListenerImplementor.java:31)
[mono-rt] 	at android.view.View.layout(View.java:22866)
[mono-rt] 	at android.view.ViewGroup.layout(ViewGroup.java:6389)
[mono-rt] 	at crc6486af4e8104107bae.LayoutViewGroupExt.n_onLayout(Native Method)
[mono-rt] 	at crc6486af4e8104107bae.LayoutViewGroupExt.onLayout(LayoutViewGroupExt.java:84)
[mono-rt] 	at android.view.View.layout(View.java:22848)
[mono-rt] 	at android.view.ViewGroup.layout(ViewGroup.java:6389)
[mono-rt] 	at crc6452ffdc5b34af3a0f.LayoutViewGroup.n_onLayout(Native Method)
[mono-rt] 	at crc6452ffdc5b34af3a0f.LayoutViewGroup.onLayout(LayoutViewGroup.java:67)
[mono-rt] 	at android.view.View.layout(View.java:22848)
[mono-rt] 	at android.view.ViewGroup.layout(ViewGroup.java:6389)
[mono-rt] 	at crc6452ffdc5b34af3a0f.ContentViewGroup.n_onLayout(Native Method)
[mono-rt] 	at crc6452ffdc5b34af3a0f.ContentViewGroup.onLayout(ContentViewGroup.java:67)
[mono-rt] 	at android.view.View.layout(View.java:22848)
[mono-rt] 	at android.view.ViewGroup.layout(ViewGroup.java:6389)
[mono-rt] 	at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
[mono-rt] 	at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
[mono-rt] 	at android.view.View.layout(View.java:22848)
[mono-rt] 	at android.view.ViewGroup.layout(ViewGroup.java:6389)
[mono-rt] 	at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
[mono-rt] 	at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
[mono-rt] 	at android.view.View.layout(View.java:22848)
[mono-rt] 	at android.view.ViewGroup.layout(ViewGroup.java:6389)
[mono-rt] 	at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
[mono-rt] 	at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
[mono-rt] 	at android.view.View.layout(View.java:22848)
[mono-rt] 	at android.view.ViewGroup.layout(ViewGroup.java:6389)
[mono-rt] 	at com.google.android.material.appbar.HeaderScrollingViewBehavior.layoutChild(HeaderScrollingViewBehavior.java:149)
[mono-rt] 	at com.google.android.material.appbar.ViewOffsetBehavior.onLayoutChild(ViewOffsetBehavior.java:43)
[mono-rt] 	at com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior.onLayoutChild(AppBarLayout.java:2376)
[mono-rt] 	at androidx.coordinatorlayout.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:953)
[mono-rt] 	at android.view.View.layout(View.java:22848)
[mono-rt] 	at android.view.ViewGroup.layout(ViewGroup.java:6389)
[mono-rt] 	at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
[mono-rt] 	at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
[mono-rt] 	at android.view.View.layout(View.java:22848)
[mono-rt] 	at android.view.ViewGroup.layout(ViewGroup.java:6389)
[mono-rt] 	at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1829)
[mono-rt] 	at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1673)
[mono-rt] 	at android.widget.LinearLayout.onLayout(LinearLayout.java:1582)
[mono-rt] 	at android.view.View.layout(View.java:22848)
[mono-rt] 	at android.view.ViewGroup.layout(ViewGroup.java:6389)
[mono-rt] 	at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
[mono-rt] 	at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
[mono-rt] 	at android.view.View.layout(View.java:22848)
[mono-rt] 	at android.view.ViewGroup.layout(ViewGroup.java:6389)
[mono-rt] 	at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1829)
[mono-rt] 	at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1673)
[mono-rt] 	at android.widget.LinearLayout.onLayout(LinearLayout.java:1582)
[mono-rt] 	at android.view.View.layout(View.java:22848)
[mono-rt] 	at android.view.ViewGroup.layout(ViewGroup.java:6389)
[mono-rt] 	at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
[mono-rt] 	at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
[mono-rt] 	at com.android.internal.policy.DecorView.onLayout(DecorView.java:784)
[mono-rt] 	at android.view.View.layout(View.java:22848)
[mono-rt] 	at android.view.ViewGroup.layout(ViewGroup.java:6389)
[mono-rt] 	at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:3478)
[mono-rt] 	at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2946)
[mono-rt] 	at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1951)
[mono-rt] 	at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8187)
[mono-rt] 	at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1056)
[mono-rt] 	at android.view.Choreographer.doCallbacks(Choreographer.java:878)
[mono-rt] 	at android.view.Choreographer.doFrame(Choreographer.java:811)
[mono-rt] 	at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1041)
[mono-rt] 	at android.os.Handler.handleCallback(Handler.java:938)
[mono-rt] 	at android.os.Handler.dispatchMessage(Handler.java:99)
[mono-rt] 	at android.os.Looper.loop(Looper.java:223)
[mono-rt] 	at android.app.ActivityThread.main(ActivityThread.java:7705)
[mono-rt] 	at java.lang.reflect.Method.invoke(Native Method)
[mono-rt] 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
[mono-rt] 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:952)
[mono-rt]