> For the complete documentation index, see [llms.txt](https://docs.apryse.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.apryse.com/android/changelogs/version-9/v9-3-1.md).

# Version 9.3.1 Changelog (August 24, 2022)

World's #1 PDF SDK Library for Web, Mobile, Server, Desktop

Version: 9.3.1.80205

Release Date: August 24, 2022

## New features

* Added support to pass a custom class for [getThumnailViewerFragment()](https://sdk.apryse.com/api/android/javadoc/reference/com/pdftron/pdf/controls/ThumbnailsViewFragment.html#getThumbnailViewFragment\(\))
* Added [usingFileExtension()](https://sdk.apryse.com/api/android/javadoc/reference/com/pdftron/pdf/config/ViewerBuilder.html#usingFileExtension\(java.lang.String\)) method to ViewerBuilder
* Added option to [remove "Reader Mode Settings" button](https://sdk.apryse.com/api/android/javadoc/reference/com/pdftron/pdf/dialog/ViewModePickerDialogFragment.ViewModePickerItems.html)

## Fixed

* Fixed issue where xod files did not retain page state
* Fixed issue where office files did not load last page
* Fixed issue where DS/DA property were not used before DR in FreeText annots
* Fixed issue were insert image from Camera was not rotated correctly
* Fixed issue with freetext preset labels with large accessibility fonts
* Fixed issue where quick menu may hide rotation handles
* Fixed issue where adding author name after updating annotation list causes the author id lookup to fail
* Fixed issue with no ripple effect on toolbar icons
* Fixed issue with back navigation after serach in outline / annotations list / user bookmarks search
* Fixed issue with share menu in overflow causing UI to push bottom sheet up
* Fixed elements in landscape mode being covered up by system navigation bar

## APIs

### PDFViewCtrlTools package

#### ViewerBuilder

*new* method: `ViewerBuilder usingFileExtension(String)`

#### AddPageDialogFragment

*new* static final field: `String ADD_PAGE_DIALOG_TAG`

#### AnnotationDialogFragment

*new* method: `void finishSearchView()`

*modified* class: `AnnotationDialogFragment`

|       | Declaration                                                                                                                          |
| ----- | ------------------------------------------------------------------------------------------------------------------------------------ |
| From: | public class AnnotationDialogFragment extends NavigationListDialogFragment implements OnQueryTextListener                            |
| To:   | public class AnnotationDialogFragment extends NavigationListDialogFragment implements OnQueryTextListener,IBookmarksDialogSearchView |

#### OutlineDialogFragment

*new* method: `void finishSearchView()`

*modified* class: `OutlineDialogFragment`

|       | Declaration                                                                                                                                                                                                         |
| ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| From: | public class OutlineDialogFragment extends NavigationListDialogFragment implements OnQueryTextListener,BookmarkNodeClickListener,OnBookmarkTreeNodeListener,EditOutlineMoveClickListener                            |
| To:   | public class OutlineDialogFragment extends NavigationListDialogFragment implements OnQueryTextListener,BookmarkNodeClickListener,OnBookmarkTreeNodeListener,EditOutlineMoveClickListener,IBookmarksDialogSearchView |

#### PdfViewCtrlTabBaseFragment

*new* method: `void onFullSaveRequired()`

*modified* abstract class: `PdfViewCtrlTabBaseFragment`

|       | Declaration                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| From: | public abstract class PdfViewCtrlTabBaseFragment extends Fragment implements PageChangeListener,DocumentDownloadListener,UniversalDocumentConversionListener,DocumentLoadListener,RenderingListener,UniversalDocumentProgressIndicatorListener,PreToolManagerListener,QuickMenuListener,AnnotationModificationListener,PdfDocModificationListener,PdfTextModificationListener,BasicAnnotationListener,OnGenericMotionEventListener,ToolChangedListener,AdvancedAnnotationListener,FileAttachmentAnnotationListener,ActionGoBackListener,OnReflowTapListener,PortfolioDialogFragmentListener                  |
| To:   | public abstract class PdfViewCtrlTabBaseFragment extends Fragment implements PageChangeListener,DocumentDownloadListener,UniversalDocumentConversionListener,DocumentLoadListener,RenderingListener,UniversalDocumentProgressIndicatorListener,PreToolManagerListener,QuickMenuListener,AnnotationModificationListener,PdfDocModificationListener,PdfTextModificationListener,BasicAnnotationListener,OnGenericMotionEventListener,ToolChangedListener,AdvancedAnnotationListener,FileAttachmentAnnotationListener,ActionGoBackListener,FullSaveListener,OnReflowTapListener,PortfolioDialogFragmentListener |

#### PdfViewCtrlTabHostFragment2

*new* method: `void onStop()`

#### ThumbnailsViewFragment

*new* static final field: `String TAG`

*new* static method: `Bundle createThumbnailViewFragmentBundle(boolean, boolean, int[], String[])`

#### UserBookmarkDialogFragment

*new* method: `void finishSearchView()`

*modified* class: `UserBookmarkDialogFragment`

|       | Declaration                                                                                                                            |
| ----- | -------------------------------------------------------------------------------------------------------------------------------------- |
| From: | public class UserBookmarkDialogFragment extends NavigationListDialogFragment implements OnQueryTextListener                            |
| To:   | public class UserBookmarkDialogFragment extends NavigationListDialogFragment implements OnQueryTextListener,IBookmarksDialogSearchView |

#### IBookmarksDialogSearchView

*new* interface: `IBookmarksDialogSearchView`

*new* method: `void finishSearchView()`

#### FileInfo

*new* static final field: `String VAR_FILE`

*new* static final field: `String VAR_PATH`

#### AnnotEdit

*new* method: `void updateRotateView()`

#### ToolManager

*new* method: `void addFullSaveListener(FullSaveListener)`

*new* method: `void onQuickMenuLocationRequested()`

*new* method: `void raiseFullSaveRequired()`

*new* method: `void removeFullSaveListener(FullSaveListener)`

#### FullSaveListener

*new* interface: `FullSaveListener`

*new* method: `void onFullSaveRequired()`

#### AnalyticsHandlerAdapter

*new* static final field: `int SCREEN_ACTIONS_FILES`

#### PdfViewCtrlSettingsManager

*new* static method: `String getOpenUrlPageStateAsyncCache(Context)`

*new* static method: `void setOpenUrlPageStateAsyncCache(Context, String)`

#### RequestCode

*new* static final field: `int PICK_CAM_ONLY`

*new* static final field: `int PICK_GALLERY`

*removed* static final field: `int USER_VOICE`

#### Utils

*new* static method: `boolean isUsingDocumentTree()`

#### ViewerUtils

*new* static final field: `String IMAGE_DPI_CONVERSION_OPTION`

*new* static method: `int getLastHPosForURL(Context, String)`

*new* static method: `int getLastVPosForURL(Context, String)`

*new* static method: `double getLastZoomForURL(Context, String)`

*new* static method: `int getRotationForURL(Context, String)`

*new* static method: `Uri openCameraIntent(Activity, int)`

*new* static method: `Uri openGalleryIntent(Activity, int)`

*new* static method: `void setLastPageStateForURL(Context, String, double, int, int, int)`

### pdftron-collab package

#### AnnotationDao

*new* method: `void updateAuthorName(String, String)`

#### AnnotationDao\_Impl

*new* method: `void updateAuthorName(String, String)`

### pdfnet-demo-utils package

#### ImportWebpageUrlSelectorDialogFragment

*new* method: `void onDismiss(DialogInterface)`

*new* method: `void setOnDismissListener(OnDismissListener)`

#### Html2PdfComponent

*new* constructor: `Html2PdfComponent(Context, HtmlConversionListener)`

*removed* constructor: `Html2PdfComponent(View, HtmlConversionListener)`

#### HtmlConversionComponent

*new* method: `void handleWebpageToPDF(FragmentActivity, Uri, OnDismissListener)`

#### HtmlConversionUiView

*new* constructor: `HtmlConversionUiView(Context)`

*removed* constructor: `HtmlConversionUiView(View)`


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.apryse.com/android/changelogs/version-9/v9-3-1.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
