Migrate to the New Viewer UI
Migrate to the New Viewer UI in Xamarin.Android
If you have integrated the document viewer previously in your app (i.e. DocumentActivity or PdfViewCtrlTabHostFragment), you can easily migrate to use the new UI with a couple of simple steps.
Prerequisites
Updated Apryse libraries to version 8.0.0 (see changelog for more info)
Migrate PdfViewCtrlTabHostFragment
Update all references to
ViewerBuildertoViewerBuilder2. This new builder will create the new viewer fragmentPdfViewCtrlTabHostFragment2, which contains the new UI.Update all references to
PdfViewCtrlTabHostFragmenttoPdfViewCtrlTabHostFragment2in your project.Update all references to
PdfViewCtrlTabFragmenttoPdfViewCtrlTabFragment2in your project.(Optional) If you have defined the
CustomAppThemestyle to customize your theme, you will need to change this style to extendPDFTronAppThemeand pass it intoViewerBuilder2as described in our customize viewer theme guide.
Migrate DocumentActivity
Remove any calls to
DocumentActivity.openDocument(...).Then launch the activity using
DocumentActivity.IntentBuilderas described in this guide.If you have defined the
CustomAppThemestyle to customize your theme, you will need to change this style to extendPDFTronAppTheme.
Migrate to the New Viewer UI in Xamarin.iOS
In version 8.0.0, we introduced a new version of the main viewing component. The new class, PTDocumentController, is a near drop-in replacement for the old PTDocumentViewController.
The new UI's API is almost entirely additive, so migrating will in many cases be a case of changing only the class name of the instantiated view controller. If you have implemented delegate methods or accessed a select few APIs, some other code changes will need to be made, as explained below.
If using PTDocumentViewController
To update: Update all references of
PTDocumentViewControllertoPTDocumentController.
Delegate methods
The class' delegate type has been changed from PTDocumentViewControllerDelegate to PTDocumentControllerDelegate.
Required change: If you have implemented delegate methods, must update the protocol you implement and the method signatures:
Change the conforming delegate from
PTDocumentViewControllerDelegatetoPTDocumentControllerDelegate.Change the delegate methods to reference the
PTDocumentController, both in method name and parameter type, eg:
is now
If using PTTabbedDocumentViewController
As of version 8.0.2, the PTTabbedDocumentViewController will by default create tabs which host instances of PTDocumentController rather than legacy PTDocumentViewController objects. No changes to accomplish this are needed on your part.
(To revert to the old legacy UI, set the viewControllerClass property of the tabbed document view controller to PTDocumentViewController).
The PTTabbedDocumentViewController's property types (e.g. selectedViewController) and method signatures (e.g. documentViewControllerAtIndex:) have changed to reference the PTDocumentBaseViewController abstract base class, from which both the PTDocumentController and legacy PTDocumentViewController inherit.
Required change: In Objective-C be careful to reference the correct class type for your project. In Swift the compiler should guide you in making the necessary changes.
Delegate methods
The type of the documentViewController parameter of the tabbedDocumentViewController:willAddDocumentViewController: delegate method has changed from PTDocumentViewController to the abstract base class PTDocumentBaseViewController.
Required change: You must match the parameter type in your implementation of the
PTTabbedDocumentViewControllerDelegateprotocol. In Swift if the parameter type in your implementation does not match the type declared in the protocol then your implementation of the method will not be called.
Update API-based customizations
The table below lists APIs that have changed.
Properties
Most properties operate as before. These are the ones that have been removed, and how to accomplish the same thing with a PTDocumentController.
Removed PTDocumentViewController properties
How to achieve the same functionality with a PTDocumentController.
freehandButtonHidden
One-touch access to freehand annotations is now found in the toolbar. It (and any other tool's button) can be hidden as described in the customize guide.
annotationToolbarButtonHidden
The visibility of the toolbar is now controlled via the toolbar switcher. The switcher can be hidden as described in the customize guide.
freehandButtonItem
A freehand button no longer exists by default in the the navigation items, but one can be added described in the customize guide.
annotationButtonItem
The toolbar's visibility is now controlled by a PTAnnotationModeIndicatorView.
undoButtonItem
This property is now part of PTAnnotationModeManager.
redoButtonItem
This property is now part of PTAnnotationModeManager.
annotationToolbar
The customize guide shows how to programmatically customize the new annotation toolbar. The old annotation toolbar class, PTAnnotationToolbar, is still available if your app requires it.
annotationToolbarHidden
The customize guide shows how to hide and show the new annotation toolbar.
Annotation toolbar
The PTAnnotationToolbar is no longer used, as the new classes are far more versatile and customizable. The old class is available for direct integration if your app requires it.
Last updated
Was this helpful?