> 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-0-0.md).

# Version 8.0.0 Changelog (September 10, 2020)

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

Version: 8.0.0.76155

Release Date: September 10, 2020

## Notes

This release of Apryse for Android brings the core PDF functionality inline with version 8.0.0 of the Apryse cross-platform APIs. More information can be found on [What's new for cross-platform APIs](/core/changelogs/version-8/8-0-0.md).

## New features

* Adds border effect to [`Square`](https://sdk.apryse.com/api/android/javadoc/reference/com/pdftron/pdf/annots/Square.html) annotation, available styles are default line and cloud shape

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

* Adds ability to collaborate on [`SignatureWidget`](https://sdk.apryse.com/api/android/javadoc/reference/com/pdftron/pdf/annots/SignatureWidget.html) in the collaboration viewer
* Adds 2 new date formats: "dd MMMM yyyy" and "dd.MM.yyyy" to the [date annotation](https://sdk.apryse.com/api/android/javadoc/reference/com/pdftron/pdf/tools/FreeTextDateCreate.html) type in the fill & sign toolbar
* Adds ability to edit existing PDF content, see "Edit PDF Content" sample in the Showcase app

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

* [Color management](https://sdk.apryse.com/api/android/javadoc/reference/com/pdftron/pdf/PDFNet.html#setColorManagement\(int\)) is now turned on by default in the document viewer for the full version
* Adds support for the xls format
* Adds support for right-to-left languages within office files
* See all cross-platform changelog here: [v8.0.0](/core/changelogs/version-8/8-0-0.md)

## Fixed

* **\[New UI]** Fixed issue where the document slider would change position even when not touching the thumb
* **\[New UI]** Fixed issue where reset button in the annotation toolbar menu editor was not working
* **\[New UI]** Fixed issue where the CAB toolbar overlaps the main toolbar in `ThumbnailsViewFragment`
* **\[New UI]** Fixed issue with stylus where tapping on tool in toolbar will cause toolbars to hide
* **\[New UI]** Fixed issue where disabled tools would still appear in the annotation toolbar component
* Fixed issue where `CustomRelativeLayout` would drift around in non-continuous page modes when flinging or sliding to the next page
* Fixed issue where the sub-menu icon in `OutlineDialogFragment` was hard to press
* Fixed issue where negative numbers could not be entered in some form fields
* Fixed issue where ink annot would be selected when using stylus as pen mode
* Fixed issue where free text annotation may appear distorted on rotated pages

## APIs

### PDFViewCtrlTools package

#### PDFNetConfig

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

#### ToolManagerBuilder

*new* method: `ToolManagerBuilder setPdfContentEditingEnabled(boolean)`

#### ToolStyleConfig

*new* method: `String getBorderEffectKey(int, String)`

*new* method: `BorderEffect getCustomBorderEffectMode(Context, int, String)`

#### ViewerBuilder

*modified* class: `ViewerBuilder`

|       | Declaration                                                                                  |
| ----- | -------------------------------------------------------------------------------------------- |
| From: | public class ViewerBuilder extends SkeletalFragmentBuilder implements ViewerBuilderInterface |
| To:   | public class ViewerBuilder extends SkeletalFragmentBuilder                                   |

#### ViewerBuilder2

*modified* class: `ViewerBuilder2`

|       | Declaration                                                                                   |
| ----- | --------------------------------------------------------------------------------------------- |
| From: | public class ViewerBuilder2 extends SkeletalFragmentBuilder implements ViewerBuilderInterface |
| To:   | public class ViewerBuilder2 extends SkeletalFragmentBuilder                                   |

#### ViewerBuilderInterface

*removed* interface: `ViewerBuilderInterface<T>`

#### FavoriteColorDialogFragment

*modified* class: `FavoriteColorDialogFragment`

|       | Declaration                                                                                                                         |
| ----- | ----------------------------------------------------------------------------------------------------------------------------------- |
| From: | public class FavoriteColorDialogFragment extends DialogFragment implements OnPageChangeListener,BaseOnTabSelectedListener           |
| To:   | public class FavoriteColorDialogFragment extends CustomSizeDialogFragment implements OnPageChangeListener,BaseOnTabSelectedListener |

#### MirrorSeekBar

*new* method: `void setInteractThumbOnly(boolean)`

#### PdfViewCtrlTabBaseFragment

*new* abstract method: `boolean isAnnotationMode()`

*new* method: `void onPdfTextChanged()`

*modified* abstract class: `PdfViewCtrlTabBaseFragment`

|       | Declaration                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| From: | public abstract class PdfViewCtrlTabBaseFragment extends Fragment implements PageChangeListener,DocumentDownloadListener,UniversalDocumentConversionListener,DocumentLoadListener,RenderingListener,UniversalDocumentProgressIndicatorListener,PreToolManagerListener,QuickMenuListener,AnnotationModificationListener,PdfDocModificationListener,BasicAnnotationListener,OnGenericMotionEventListener,ToolChangedListener,AdvancedAnnotationListener,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,OnReflowTapListener,PortfolioDialogFragmentListener |

#### PdfViewCtrlTabFragment2

*new* method: `boolean isAnnotationMode()`

#### PdfViewCtrlTabHostBaseFragment

*new* abstract method: `void onEditToolbarMenu()`

#### AnnotStyle

*new* method: `BorderEffect getBorderEffect()`

*new* method: `boolean hasBorderEffect()`

*new* method: `boolean isSquare()`

*new* method: `void setBorderEffect(BorderEffect)`

*new* method: `void updateBorderEffectListner(BorderEffect, boolean)`

#### OnAnnotStyleChangeListener

*new* method: `void onChangeAnnotBorderEffect(BorderEffect)`

#### AnnotEdit

*new* method: `void onChangeAnnotBorderEffect(BorderEffect)`

#### CustomRelativeLayout

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

*modified* class: `CustomRelativeLayout`

|       | Declaration                                                                                                        |
| ----- | ------------------------------------------------------------------------------------------------------------------ |
| From: | public class CustomRelativeLayout extends RelativeLayout implements OnCanvasSizeChangeListener                     |
| To:   | public class CustomRelativeLayout extends RelativeLayout implements OnCanvasSizeChangeListener,PageSlidingListener |

#### DialogAnnotNote

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

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

#### QuickMenu

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

#### RectCreate.BorderEffect

*new* final class: `BorderEffect`

*new* static final field: `BorderEffect CLOUDY`

*new* static final field: `BorderEffect DEFAULT`

*new* final field: `int mBEffect`

*new* static method: `BorderEffect fromLabel(Context, String)`

*new* static method: `BorderEffect valueOf(String)`

*new* static method: `BorderEffect[] values()`

#### SimpleShapeCreate

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

*removed* method: `void setupAnnotProperty(int, float, float, int, String, String)`

#### StickyNoteCreate

*new* method: `void onChangeAnnotBorderEffect(BorderEffect)`

#### TextSelect

*new* method: `void editText(String)`

*new* method: `void exitCurrentMode()`

#### Tool

*new* static final field: `int ANNOT_PERMISSION_INTERACT`

#### ToolManager

*new* method: `void addDisabledToolModesChangedListener(DisabledToolModeChangedListener)`

*new* method: `void addPdfTextModificationListener(PdfTextModificationListener)`

*new* method: `Annot getAnnotationAt(int, int)`

*new* method: `boolean isPdfContentEditingEnabled()`

*new* method: `void raisePdfTextModified()`

*new* method: `void removeDisabledToolModeChangedListener(DisabledToolModeChangedListener)`

*new* method: `void removePdfTextModificationListener(PdfTextModificationListener)`

*new* method: `void setPdfContentEditingEnabled(boolean)`

#### DisabledToolModeChangedListener

*new* interface: `DisabledToolModeChangedListener`

*new* method: `void onDisabledToolModeChanged(Set<ToolMode>)`

#### PdfTextModificationListener

*new* interface: `PdfTextModificationListener`

*new* method: `void onPdfTextChanged()`

#### UndoRedoManager

*new* method: `void destroy()`

*new* static method: `boolean isEditContentAction(Context, String)`

*new* method: `void onPdfTextChanged()`

*modified* class: `UndoRedoManager`

|       | Declaration                                                                                                                   |
| ----- | ----------------------------------------------------------------------------------------------------------------------------- |
| From: | public class UndoRedoManager implements AnnotationModificationListener,PdfDocModificationListener                             |
| To:   | public class UndoRedoManager implements AnnotationModificationListener,PdfDocModificationListener,PdfTextModificationListener |

#### AnnotUtils

*new* static field: `String KEY_WidgetAuthor`

*new* static method: `String getAuthor(Annot)`

*new* static method: `boolean hasPermission(PDFViewCtrl, Annot, int)`

#### AnnotationPropertyPreviewView

*new* method: `void setBorderEffect(BorderEffect)`

#### DrawingUtils

*new* static method: `void drawCloudyRect(PDFViewCtrl, int, Canvas, ArrayList<PointF>, Path, Paint, int, Paint, int, double)`

*new* static method: `void drawCloudyRectangle(PDFViewCtrl, int, Canvas, Path, PointF, PointF, int, int, Paint, Paint, double)`

#### PdfViewCtrlSettingsManager

*new* static final field: `String KEY_PREF_BACKUP_FOLDER_PATH`

*new* static final field: `String KEY_PREF_BACKUP_FOLDER_PATH_DEFAULT_VALUE`

*new* static final field: `String KEY_PREF_BACKUP_FOLDER_TREE`

*new* static final field: `String KEY_PREF_BACKUP_FOLDER_TREE_DEFAULT_VALUE`

*new* static final field: `String KEY_PREF_COLOR_MANAGEMENT`

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

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

*new* static method: `boolean getColorManagement(Context)`

*new* static method: `void setColorManagement(Context, boolean)`

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

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

#### Utils

*new* static field: `boolean FORCE_PRE_ANDROID_Q`

#### ViewerUtils

*new* static method: `String getSelectedString(PDFViewCtrl, boolean)`

#### AnnotDrawingView

*new* method: `void updateBorderEffect(BorderEffect)`

#### AnnotView

*new* method: `int getAnnotRotation()`

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

*new* method: `void updateBorderEffect(BorderEffect)`

#### AnnotViewImpl

*new* field: `int mAnnotRotation`

*new* method: `void updateBorderEffect(BorderEffect)`

#### AnnotationToolbarComponent

*new* constructor: `AnnotationToolbarComponent(LifecycleOwner, AnnotationToolbarViewModel, PresetBarViewModel, ToolManagerViewModel, ViewGroup)`

*new* constructor: `AnnotationToolbarComponent(LifecycleOwner, AnnotationToolbarViewModel, PresetBarViewModel, ToolManagerViewModel, AnnotationToolbarView)`

*removed* constructor: `AnnotationToolbarComponent(LifecycleOwner, PresetBarViewModel, ToolManagerViewModel, ViewGroup)`

*removed* constructor: `AnnotationToolbarComponent(LifecycleOwner, PresetBarViewModel, ToolManagerViewModel, AnnotationToolbarView)`

#### AnnotationToolbarViewModel

*new* class: `AnnotationToolbarViewModel`

*new* constructor: `AnnotationToolbarViewModel(Application)`

*new* method: `void observeBuilderState(LifecycleOwner, Observer<AnnotationToolbarBuilder>)`

*new* method: `void observeDisabledToolModesState(LifecycleOwner, Observer<DisabledToolModes>)`

*new* method: `void observeHiddenButtonTypesState(LifecycleOwner, Observer<DisabledButtonTypes>)`

*new* method: `void setAnnotationToolbarBuilder(AnnotationToolbarBuilder)`

*new* method: `void setToolModeFilter(Set<ToolMode>)`

*new* method: `void setToolbarButtonVisibility(ToolbarButtonType, boolean)`

*new* method: `void updateState()`

#### DisabledButtonTypes

*new* class: `DisabledButtonTypes`

*new* constructor: `DisabledButtonTypes()`

*new* method: `Set<ToolbarButtonType> getToolbarButtonTypesToHide()`

*new* method: `void setDisabledButtonTypes(Set<ToolbarButtonType>)`

*new* method: `void setToolbarButtonVisibility(ToolbarButtonType, boolean)`

#### DisabledToolModes

*new* class: `DisabledToolModes`

*new* constructor: `DisabledToolModes()`

*new* method: `Set<ToolMode> getDisabledToolModes()`

*new* method: `void setDisabledToolModes(Set<ToolMode>)`

#### ObservableAnnotationToolbarBuilder

*new* class: `ObservableAnnotationToolbarBuilder`

*new* constructor: `ObservableAnnotationToolbarBuilder()`

*new* constructor: `ObservableAnnotationToolbarBuilder(AnnotationToolbarBuilder)`

*new* method: `AnnotationToolbarBuilder getBuilder()`

*new* method: `void setAnnotationToolbarBuilder(AnnotationToolbarBuilder)`

#### DefaultToolbars

*new* static method: `AnnotationToolbarBuilder getDefaultAnnotationToolbarBuilderByTag(String)`

#### TabletAnnotationToolbarComponent

*new* constructor: `TabletAnnotationToolbarComponent(Fragment, FragmentManager, AnnotationToolbarViewModel, PresetBarViewModel, ToolManagerViewModel, AnnotationToolbarView)`

*removed* constructor: `TabletAnnotationToolbarComponent(Fragment, FragmentManager, PresetBarViewModel, ToolManagerViewModel, AnnotationToolbarView)`

### pdftron-collab package

#### CollabViewerBuilder

*modified* class: `CollabViewerBuilder`

|       | Declaration                                                                                        |
| ----- | -------------------------------------------------------------------------------------------------- |
| From: | public class CollabViewerBuilder extends SkeletalFragmentBuilder implements ViewerBuilderInterface |
| To:   | public class CollabViewerBuilder extends SkeletalFragmentBuilder                                   |

#### CollabViewerBuilder2

*modified* class: `CollabViewerBuilder2`

|       | Declaration                                                                                         |
| ----- | --------------------------------------------------------------------------------------------------- |
| From: | public class CollabViewerBuilder2 extends SkeletalFragmentBuilder implements ViewerBuilderInterface |
| To:   | public class CollabViewerBuilder2 extends SkeletalFragmentBuilder                                   |

#### XfdfUtils

*new* static method: `ArrayList<AnnotationEntity> convToAnnotations(String, String, String, String)`

*removed* static method: `ArrayList<AnnotationEntity> convToAnnotations(String, String, String)`


---

# 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-0-0.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.
