> 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-8/v8-1-1.md).

# Version 8.1.1 Changelog (January 28, 2021)

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

Version: 8.1.1.76935

Release Date: January 28, 2021

## New features

* New smart pen tool: a tool that will allow users to create text markups on text and create ink on blank space without the need of manually switching tools

![](https://226546913-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0QItsdFBmuuL9ezHimHy%2Fuploads%2Fgit-blob-386d572fec4acfc5b567ff90ab66a817ad36d995%2Fe9fba08c35fbab5086ced09419ec7fb1eef91aaa-418x862.gif?alt=media)

* New PDF to Word allows users to easily export PDF to WORD and preview the result in the viewer, as well as saving it locally or sharing with others. This is distributed in a new Apryse Actions package. Get started here: [PDF to Word](/android/conversion/conversion/pdf-to-word-a.md)

![](https://226546913-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0QItsdFBmuuL9ezHimHy%2Fuploads%2Fgit-blob-e717e6afa0f85d840c6092587f9fa0afd6e0b318%2F6081a621746775ea00d54a1e59a2c016386d669f-416x858.gif?alt=media)

* Shape annotations (rectangle, oval, line, arrow) can now be created with a single tap when the respective shape creation tool is active

![](https://226546913-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0QItsdFBmuuL9ezHimHy%2Fuploads%2Fgit-blob-fce620bdb6eef1d6d4320a919b3f4d5216a47343%2Fcba8f4c1ee21a934dc1aa8888a5e95b68edca4b3-418x860.gif?alt=media)

* Adds ability to create user bookmarks in the thumbnails browser

![](https://226546913-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0QItsdFBmuuL9ezHimHy%2Fuploads%2Fgit-blob-d5be119afbc959b708754adcfa3f11ac517e52f6%2F7c6e33d50ad22c522461d139354ff799000a6d0a-416x862.gif?alt=media)

* Standard rubber stamps can now be localized

![](https://226546913-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0QItsdFBmuuL9ezHimHy%2Fuploads%2Fgit-blob-43787e9d5f3e57ace11d4918999379d86d851479%2Fd71349655148c0404028854e954f57fff2cc1617-418x837.jpg?alt=media)

* Adds APIs to [set new annotation toolbars](https://sdk.apryse.com/api/android/javadoc/reference/com/pdftron/pdf/controls/PdfViewCtrlTabHostFragment2.html#setAnnotationToolbars\(java.util.List<com.pdftron.pdf.widget.toolbar.builder.AnnotationToolbarBuilder>\)) and \[show/hide annotation toolbars]\(<https://sdk.apryse.com/api/android/javadoc/reference/com/pdftron/pdf/controls/PdfViewCtrlTabHostFragment2.html#setAnnotationToolbarVisible(boolean>, boolean))
* Adds API to [disable user bookmark creation](https://sdk.apryse.com/api/android/javadoc/reference/com/pdftron/pdf/config/ViewerConfig.Builder.html#userBookmarkCreationEnabled\(boolean\)) through FAB in the user bookmarks dialog

## Fixed

* Fixed reflow crash for apps targeting API 30
* Fixed issue where sign signature with stamps flag would cause normal signature stamps to be placed incorrectly
* Fixed issue where document slider behaves incorrectly in RTL mode
* Fixed issue where document slider touch is not detected if too close to the edge of the screen
* Fixed issue where selecting and moving multiple pressure inks would cause resized annotation appearance
* Fixed annotation toolbar database leak warning
* Fixed issue where unwanted artifact is drawn when dismiss the quick menu
* Improved performance when signing on certain devices
* Fixed issue where favourite toolbar editor does not reflect current state of the toolbar
* Fixed issue where favourite toolbar editor still shows disabled tools
* Fixed issue where done button is missing for poly-shape tools
* Fixed issue where stylus as pen mode creates separate annotations per stroke

## APIs

### PDFViewCtrlTools package

#### ToolManagerBuilder

*new* method: `ToolManagerBuilder setTapToCreateShapeHalfWidth(int)`

#### ViewerConfig.Builder

*new* method: `Builder userBookmarkCreationEnabled(boolean)`

#### AnnotStyleDialogFragment

*new* method: `SparseArray<AnnotationPropertyPreviewView> getAnnotPreviews()`

*new* method: `ArrayList<AnnotStyle> getAnnotStyles()`

*new* method: `int getCurrentTabIndex()`

*new* method: `void onAnnotStyleLayoutUpdated()`

*new* method: `void onPageScrollStateChanged(int)`

*new* method: `void onPageScrolled(int, float, int)`

*new* method: `void onPageSelected(int)`

*new* method: `void setAnnotStyle(int, AnnotStyle)`

*new* method: `void setCanShowPressureSwitch(int, boolean)`

*new* method: `void setCanShowRichContentSwitch(int, boolean)`

*modified* class: `AnnotStyleDialogFragment`

|       | Declaration                                                                                                                                      |
| ----- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| From: | public class AnnotStyleDialogFragment extends BaseBottomDialogFragment implements OnPresetSelectedListener,AnnotStyleHolder                      |
| To:   | public class AnnotStyleDialogFragment extends BaseBottomDialogFragment implements OnPresetSelectedListener,AnnotStyleHolder,OnPageChangeListener |

#### AnnotStyleDialogFragment.Builder

*new* method: `Builder setExtraAnnotStyles(ArrayList<AnnotStyle>)`

*new* method: `Builder setInitialTabIndex(int)`

*new* method: `Builder setMoreAnnotTypes(int, ArrayList<Integer>)`

*new* method: `Builder setTabTitles(String[])`

#### AnnotStyleView

*new* method: `void setAnnotType(int, int)`

#### PdfViewCtrlTabBaseFragment.SaveFolderWrapper

*new* method: `ExternalFileInfo getNewExternalFile()`

*new* method: `ExternalFileInfo getSelectedExternalFolder()`

*new* method: `File getSelectedFolder()`

#### PdfViewCtrlTabHostFragment2

*new* method: `void setAnnotationToolbarVisible(boolean, boolean)`

*new* method: `void setAnnotationToolbars(List<AnnotationToolbarBuilder>)`

#### ToolbarSwitcherItem

*new* method: `List<ToolbarItem> getToolbarItems()`

#### AnnotStyle

*new* static final field: `int CUSTOM_SMART_PEN`

#### AnnotStyleHolder

*new* method: `SparseArray<AnnotationPropertyPreviewView> getAnnotPreviews()`

*new* method: `void onAnnotStyleLayoutUpdated()`

#### StandardStampOption

*new* static method: `void clearCache(Context)`

#### StandardStampPreviewAppearance

*new* constructor: `StandardStampPreviewAppearance(String, int, CustomStampPreviewAppearance)`

*new* constructor: `StandardStampPreviewAppearance(String, int, CustomStampPreviewAppearance, boolean, boolean)`

*new* final field: `String stampLabel`

*new* method: `String getText(Context)`

#### FreehandCreate

*new* static method: `float computeThresholdValue(View, float)`

#### SmartPenInk

*new* class: `SmartPenInk`

*new* constructor: `SmartPenInk(PDFViewCtrl)`

*new* method: `ToolModeBase getToolMode()`

*new* method: `boolean onDown(MotionEvent)`

*new* method: `void setupAnnotStyles(ArrayList<AnnotStyle>)`

#### SmartPenMarkup

*new* class: `SmartPenMarkup`

*new* constructor: `SmartPenMarkup(PDFViewCtrl)`

*new* method: `int getCreateAnnotType()`

*new* method: `ToolModeBase getToolMode()`

*new* method: `boolean onDown(MotionEvent)`

*new* method: `void setupAnnotProperty(AnnotStyle)`

*new* method: `void setupAnnotStyles(ArrayList<AnnotStyle>)`

#### Tool

*new* method: `void setupAnnotStyles(ArrayList<AnnotStyle>)`

#### ToolManager

*new* method: `void addToolSetListener(ToolSetListener)`

*new* method: `int getTapToCreateShapeHalfWidth()`

*new* method: `void removeToolSetListener(ToolSetListener)`

*new* method: `void setTapToCreateShapeHalfWidth(int)`

#### ToolManager.ToolMode

*new* static final field: `ToolMode SMART_PEN_INK`

*new* static final field: `ToolMode SMART_PEN_TEXT_MARKUP`

#### ToolManager.ToolSetListener

*new* interface: `ToolSetListener`

*new* method: `void onToolSet(Tool)`

#### BookmarkManager

*new* static method: `void removePdfBookmark(Context, PDFViewCtrl, long, int)`

*new* static method: `void removeUserBookmark(Context, String, long, int)`

#### DialogGoToPage

*new* method: `void show(int, int, String)`

#### PdfViewCtrlSettingsManager

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

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

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

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

#### Utils

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

*new* static method: `String getTempFile(Context, String)`

#### ViewerUtils

*new* static method: `void addPageToBookmark(Context, boolean, PDFViewCtrl, int)`

*new* static method: `void removePageBookmark(Context, boolean, PDFViewCtrl, int)`

#### WrapContentViewPager

*new* class: `WrapContentViewPager`

*new* constructor: `WrapContentViewPager(Context)`

*new* constructor: `WrapContentViewPager(Context, AttributeSet)`

*new* method: `void setContentHeight(int)`

#### PresetBarViewModel

*new* method: `void updateAnnotStyles(ArrayList<AnnotStyle>, int)`

*removed* method: `void updateAnnotStyle(AnnotStyle, int)`

#### PresetBarState

*new* method: `void updateAnnotStyles(ArrayList<AnnotStyle>, int)`

*removed* method: `void updateAnnotStyle(AnnotStyle, int)`

#### PresetButtonState

*new* method: `void addAnnotStyle(Context, int, int, String)`

*new* method: `ArrayList<AnnotStyle> getAnnotStyles()`

*new* method: `void setAnnotStyles(ArrayList<AnnotStyle>)`

*removed* method: `AnnotStyle getAnnotStyle()`

*removed* method: `void setAnnotStyle(AnnotStyle)`

#### PresetActionButton

*new* method: `void updateAppearance(ArrayList<AnnotStyle>)`

#### ToolManagerViewModel

*new* method: `void observeToolSet(LifecycleOwner, Observer<ToolSet>)`

#### ToolManagerViewModel.ToolSet

*new* final class: `ToolSet`

*new* constructor: `ToolSet(Tool)`

*new* final field: `Tool newTool`

#### ToolbarButtonType

*new* static final field: `ToolbarButtonType SMART_PEN`

#### DefaultToolbars.ButtonId

*new* static final field: `ButtonId SMART_PEN`

#### ToolbarSharedPreferences

*new* static method: `List<ToolbarItem> getCustomizableSublist(List<ToolbarItem>)`

*removed* static method: `int getToolbarStringResByName(Context, String)`

#### ActionButton

*new* method: `void updateAppearance(ArrayList<AnnotStyle>)`

*removed* method: `void updateAppearance(AnnotStyle)`

#### AnnotationToolbarTextButtonInflater

*new* class: `AnnotationToolbarTextButtonInflater`

*new* static method: `AppCompatButton inflate(Context, int)`

#### ToolbarDatabase

*new* static method: `ToolbarDatabase getInstance(Context)`


---

# 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 dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.apryse.com/android/changelogs/version-8/v8-1-1.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
