Some test text!

Discord Logo

Chat with us

PDFTron is now Apryse, learn more here.

Android / Changelog / v9.1.1


PDFTron is now Apryse, learn more here.

Version 9.1.1 Changelog (October 14, 2021)


Release Date: October 14, 2021

New features

  • Adds support for nested OCG layers
Normal stateDisabled state
  • Cropping dialog UX updates
  • Viewer scrollbar UX updates
  • Adds ability to allow users enter password to remote PDF documents
  • Adds ability to scroll with 1 finger when in sticky note, free text, sound and file attachment tool creation mode
  • Adds ability to collapse all nodes in outline UI
  • Outline UI now respects bold/italic flags on each node
  • New API to specify edit modes and undo modes for collaboration viewer
  • New API to reload user bookmarks list after importing bookmarks JSON


  • Fixed issue where links clicked in reflow mode would not go through the intercept callback
  • Fixed issue where user bookmark events trigger after lifecycle events in certain situations
  • Fixed issue where long press on read-only fields would not show long press menu
  • Fixed issue where saving identical copy would not work with non-PDF documents
  • Fixed issue where internal link jumping behaves strangely in vertical reflow mode
  • Fixed issue where free text custom fonts would not appear correctly on remote client in collaboration mode
  • Fixed issue where empty rich text still gets created
  • Fixed issue where adding images through long press menu would not work in certain situations
  • Fixed issue where undo button would show up twice in certain situations
  • Fixed incorrect layout and theme in signature related UI


PDFViewCtrlTools package


new method: ToolManagerBuilder setMoveAnnotationBetweenPages(boolean)


new class: AnnotationsAdapter

new constructor: AnnotationsAdapter(ArrayList<AnnotationInfo>, boolean, RecyclerView, PDFViewCtrl, AnalyticsEventListener)

new method: void addAll(List<AnnotationInfo>)

new method: void clear()

new method: AnnotationInfo getItem(int)

new method: int getItemCount()

new method: ArrayList<AnnotationInfo> getItems()

new method: ArrayList<AnnotationInfo> getItemsOnPage(int)

new method: void onBindViewHolder(ViewHolder, int)

new method: ViewHolder onCreateViewHolder(ViewGroup, int)

new method: boolean remove(AnnotationInfo)

new method: void removeAll(List<AnnotationInfo>)

new method: void replaceAll(List<AnnotationInfo>)


new class: ViewHolder

new constructor: ViewHolder(AnnotationsAdapter, View)

new field: ImageView icon

new field: TextView line1

new field: TextView line2

new field: TextView separator

new method: void onCreateContextMenu(ContextMenu, View, ContextMenuInfo)


modified class: OutlineDialogFragment

From:public class OutlineDialogFragment extends NavigationListDialogFragment implements OnQueryTextListener,BookmarkNodeClickListener,OnTreeNodeListener,EditOutlineMoveClickListener
To:public class OutlineDialogFragment extends NavigationListDialogFragment implements OnQueryTextListener,BookmarkNodeClickListener,OnBookmarkTreeNodeListener,EditOutlineMoveClickListener


new static final field: String BUNDLE_TAB_ANNOTATION_MANAGER_EDIT_MODE

new static final field: String BUNDLE_TAB_ANNOTATION_MANAGER_UNDO_MODE

new method: void showBackAndForwardButtons()

removed static final field: String BUNDLE_TAB_ANNOTATION_MANAGER_MODE


removed method: void startSeekBarTimer()

removed method: void stopSeekBarTimer()


new method: void reloadUserBookmarks()

new method: void showUserCropDialog(PDFViewCtrl)


new method: void setReflowUrlLoadedListener(ReflowUrlLoadedListener)


new interface: ReflowUrlLoadedListener

new method: boolean onReflowExternalUrlLoaded(WebView, String)

new method: boolean onReflowInternalUrlLoaded(WebView, String)


new method: void setReflowUrlLoadedListener(ReflowUrlLoadedListener)


new method: void loadBookmarks()


new class: UserCropApplyDialogFragment

new constructor: UserCropApplyDialogFragment()

new static final field: String BUNDLE_IS_EVEN

new static final field: Integer OPTION_ALL_PAGES

new static final field: Integer OPTION_EDITED_PAGE

new static final field: Integer OPTION_ODD_OR_EVEN_PAGES

new static method: UserCropApplyDialogFragment newInstance(boolean)

new method: Dialog onCreateDialog(Bundle)

new method: void setUserCropApplyDialogListener(UserCropApplyDialogListener)


new interface: UserCropApplyDialogListener

new method: void onApplyCropOption(int)


new method: void onViewCreated(View, Bundle)

removed static method: UserCropDialogFragment newInstance(boolean, boolean)

removed method: void setImageToCropBitmap(Bitmap)


new method: Fragment getCurrentFragment()


new class: PdfLayer

new constructor: PdfLayer(Group, String, Boolean, boolean, int, PdfLayer)

new method: Boolean getChecked()

new method: ArrayList<PdfLayer> getChildren()

new method: Group getGroup()

new method: int getLevel()

new method: String getName()

new method: PdfLayer getParent()

new method: boolean hasChildren()

new method: Boolean isChecked()

new method: boolean isEnabled()

new method: boolean isLocked()

new method: void setChecked(Boolean)

new method: void setChildren(ArrayList<PdfLayer>)

new method: void setEnabled(boolean)

new method: void setGroup(Group)

new method: void setLocked(boolean)

new method: void setName(String)

new method: void setParent(PdfLayer)


new class: PdfLayerDialogFragment

new constructor: PdfLayerDialogFragment()

new method: boolean isEmpty()

new static method: PdfLayerDialogFragment newInstance()

new method: boolean onClick(TreeNode<PdfLayerNode>, ViewHolder)

new method: void onCreate(Bundle)

new method: View onCreateView(LayoutInflater, ViewGroup, Bundle)

new method: void onDestroyView()

new method: void onExpandNode(TreeNode<PdfLayerNode>, int)

new method: void onNodeCheckBoxSelected(TreeNode<PdfLayerNode>, ViewHolder)

new method: void onToggle(boolean, ViewHolder)

new method: void onViewCreated(View, Bundle)

new method: PdfLayerDialogFragment setPdfViewCtrl(PDFViewCtrl)


modified static method: ArrayList<LayerInfo> getLayers(PDFViewCtrl, PDFDoc)

From:public static ArrayList getLayers(PDFViewCtrl, PDFDoc) throws PDFNetException
To:public static ArrayList getLayers(PDFViewCtrl, PDFDoc) throws PDFNetException


removed class: LayerInfo

removed field: boolean checked

removed field: Group group


new method: void setup(ArrayList<PdfLayer>)

removed method: void setup(ArrayList<LayerInfo>)


new constructor: PdfLayerViewAdapter(ArrayList<PdfLayer>)

removed constructor: PdfLayerViewAdapter(ArrayList<LayerInfo>)

modified method: LayerInfo getItem(int)

From:public LayerInfo getItem(int)
To:public PdfLayer getItem(int)


new method: void commitEditing()


removed constructor: FreeTextInfo(int, int, String)

removed method: void setFont(Context, PDFViewCtrl)

modified static method: void setFont(PDFViewCtrl, FreeText, String)

From:public static void setFont(PDFViewCtrl, FreeText, String) throws JSONException, PDFNetException
To:public static boolean setFont(PDFViewCtrl, FreeText, String) throws JSONException, PDFNetException


new method: EditPermissionMode getEditMode()

new method: AnnotationManagerMode getUndoMode()

removed method: AnnotationManagerMode getMode()


new final class: EditPermissionMode

new static final field: EditPermissionMode EDIT_OTHERS

new static final field: EditPermissionMode EDIT_OWN

new static method: EditPermissionMode valueOf(String)

new static method: EditPermissionMode[] values()


new method: void enableAnnotManager(String, String, AnnotationManagerMode, EditPermissionMode, AnnotationSyncingListener)

new method: boolean isMoveAnnotationBetweenPages()

new method: void setMoveAnnotationBetweenPages(boolean)

removed method: void enableAnnotManager(String, String, AnnotationManagerMode, AnnotationSyncingListener)


removed static method: boolean getShowScrollbarOption(Context)

removed static method: void setShowScrollbarOption(Context, boolean)


new static method: void removeUserCrop(PDFDoc)

new static method: Completable removeUserCropAsync(PDFDoc)


new static final field: ButtonId MORE


new method: int getFontStyle()


new class: PdfLayerNode

new constructor: PdfLayerNode(PdfLayer)

new static final field: String PLACEHOLDER_TAG

new field: boolean mIsOpen

new field: boolean mIsSelected

new method: int getLayoutId()

new method: PdfLayer getPdfLayer()

new method: String getTitle()

new method: boolean isOpen()

new method: PdfLayerNode setOpen(boolean)


new class: PdfLayerNodeBinder

new constructor: PdfLayerNodeBinder(PdfLayerNodeClickListener)

new method: void bindView(ViewHolder, int, TreeNode)

new method: void bindView(ViewHolder, int, TreeNode)

new method: int getLayoutId()

new method: ViewHolder provideViewHolder(View)

pdftron-collab package


new method: CollabViewerBuilder2 usingAnnotationManagerEditMode(EditPermissionMode)

new method: CollabViewerBuilder2 usingAnnotationManagerUndoMode(AnnotationManagerMode)

removed method: CollabViewerBuilder2 usingAnnotationManagerMode(AnnotationManagerMode)

Get the answers you need: Support