> 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-6/v6-9-0.md).

# Version 6.9.0 Changelog (November 5, 2018)

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

Version: 6.9.0.68227

Release Date: November 5, 2018

## New features

* New signature flow: now supports adding signature from camera and photos on device, as well as showing a list of previously used signatures (can be configured)

![](https://226546913-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0QItsdFBmuuL9ezHimHy%2Fuploads%2Fgit-blob-58079690d49ad3b241e622c3112ed6d95bc60fc3%2F379b7f6a190dd28fd27a9a78cb4b261cdaf5a619-454x814.gif?alt=media)

* You can now restrict download data usage when opening online documents, see tutorial here: [Open from online URL](/android/viewer/view-online-pdfs.md#restrict-data-usage)
* [`DocumentActivity`](https://sdk.apryse.com/api/android/javadoc/reference/com/pdftron/pdf/controls/DocumentActivity.html) and [`PdfViewCtrlTabHostFragment`](https://sdk.apryse.com/api/android/javadoc/reference/com/pdftron/pdf/controls/PdfViewCtrlTabHostFragment.html) now comes with **Save a copy** options including: identical copy, flattened copy ([`Flattener`](https://sdk.apryse.com/api/android/javadoc/reference/com/pdftron/pdf/Flattener.html)), reduced file size copy ([`Optimizer`](https://sdk.apryse.com/api/android/javadoc/reference/com/pdftron/pdf/Optimizer.html)), permanently cropped copy and password protected copy (can be configured)
* Adds ability to open files from Android system picker when using [`AdvancedReaderActivity`](https://sdk.apryse.com/api/android/javadoc/reference/com/pdftron/demo/app/AdvancedReaderActivity.html)
* Adds support for screen cutouts for Android Pie and newer
* [`PdfViewCtrlTabHostFragment`](https://sdk.apryse.com/api/android/javadoc/reference/com/pdftron/pdf/controls/PdfViewCtrlTabHostFragment.html) now comes with option to not use the activity's `SupportActionBar`, this is useful if you would like to show multiple viewers side by side
* [`AnnotationToolbar`](https://sdk.apryse.com/api/android/javadoc/reference/com/pdftron/pdf/controls/AnnotationToolbar.html) now comes with APIs to remove the close, pan and overflow button, as well as APIs to change the default annotation tool grouping, see tutorial here: [AnnotationToolbar](/android/annotation/annotation-toolbar-a.md#hide-other-buttons)

## Dependency changes

* Tools package now uses dependency `io.reactivex.rxjava2:rxjava` and `io.reactivex.rxjava2:rxandroid`
* All Android support library is updated to `28.0.0`

## Fixed

* When using [`DocumentActivity`](https://sdk.apryse.com/api/android/javadoc/reference/com/pdftron/pdf/controls/DocumentActivity.html) or [`PdfViewCtrlTabHostFragment`](https://sdk.apryse.com/api/android/javadoc/reference/com/pdftron/pdf/controls/PdfViewCtrlTabHostFragment.html) to open online PDF, the viewer will now resume to the last page viewed previously with the same URL
* Fixed multi-select tool do not work on rotated pages
* Fixed callout annotation has incorrect content box when selecting any of the preset styles
* Fixed conversion unit in ruler style dialog is cut off on some devices
* Fixed sound annotation does not use previously selected color when creating new sound
* Fixed tap based annotation creates new annotation on next tap when the quick menu is still showing, should dismiss the quick menu instead
* Many UX improvements
  * New view mode icon
  * Quick menu secondary menu style now follows material design guideline
  * Adds animation in various areas

## APIs

### Added

* A number of new configuration options added to the [`ViewerConfig.Builder`](https://sdk.apryse.com/api/android/javadoc/reference/com/pdftron/pdf/config/ViewerConfig.Builder.html), such as document conversion options, cache location for downloaded files, option to not use support action bar etc.
* A number of new configuration options added to the [`ToolManagerBuilder`](https://sdk.apryse.com/api/android/javadoc/reference/com/pdftron/pdf/config/ToolManagerBuilder.html), such as option to show hide annotation comments indicator, option to show saved signatures, option to show import signature from photos etc.
* \[`ToolManager::onAnnotPainterUpdated(int, long, com.pdftron.pdf.CurvePainter)`]\(<https://sdk.apryse.com/api/android/javadoc/reference/com/pdftron/pdf/tools/ToolManager.html#onAnnotPainterUpdated(int>, long, CurvePainter))
* [`PDFViewCtrl.HTTPRequestOptions::restrictDownloadUsage(boolean)`](https://sdk.apryse.com/api/android/javadoc/reference/com/pdftron/pdf/PDFViewCtrl.HTTPRequestOptions.html#restrictDownloadUsage\(boolean\))
* \[`PDFViewCtrl::setDisplayCutout`]\(<https://sdk.apryse.com/api/android/javadoc/reference/com/pdftron/pdf/PDFViewCtrl.html#setDisplayCutout(int>, int))
* [`PdfViewCtrlTabFragment.TabListener::onTabJumpToSdCardFolder()`](https://sdk.apryse.com/api/android/javadoc/reference/com/pdftron/pdf/controls/PdfViewCtrlTabFragment.TabListener.html#onTabJumpToSdCardFolder\(\))
* [`PdfViewCtrlTabFragment.TabListener::onUpdateOptionsMenu()`](https://sdk.apryse.com/api/android/javadoc/reference/com/pdftron/pdf/controls/PdfViewCtrlTabFragment.TabListener.html#onUpdateOptionsMenu\(\))
* [`PdfViewCtrlTabHostFragment.TabHostListener::canShowFileCloseSnackbar()`](https://sdk.apryse.com/api/android/javadoc/reference/com/pdftron/pdf/controls/PdfViewCtrlTabHostFragment.TabHostListener.html#canShowFileCloseSnackbar\(\))
* [`PdfViewCtrlTabHostFragment.TabHostListener::onJumpToSdCardFolder()`](https://sdk.apryse.com/api/android/javadoc/reference/com/pdftron/pdf/controls/PdfViewCtrlTabHostFragment.TabHostListener.html#onJumpToSdCardFolder\(\))
* \[`ToolManager.AdvancedAnnotationListener::imageSignatureSelected(android.graphics.PointF, int, java.lang.Long)`]\(<https://sdk.apryse.com/api/android/javadoc/reference/com/pdftron/pdf/tools/ToolManager.AdvancedAnnotationListener.html#imageSignatureSelected(android.graphics.PointF>, int, java.lang.Long))
* [`ToolManager.PreToolManagerListener::onDown(android.view.MotionEvent)`](https://sdk.apryse.com/api/android/javadoc/reference/com/pdftron/pdf/tools/ToolManager.PreToolManagerListener.html#onDown\(android.view.MotionEvent\))
* [`ToolManager.QuickMenuListener::onShowQuickMenu(com.pdftron.pdf.Annot)`](https://sdk.apryse.com/api/android/javadoc/reference/com/pdftron/pdf/tools/ToolManager.QuickMenuListener.html#onShowQuickMenu\(Annot\))
* \[`ToolManager.Tool::onAnnotPainterUpdated(int, long, com.pdftron.pdf.CurvePainter)`]\(<https://sdk.apryse.com/api/android/javadoc/reference/com/pdftron/pdf/tools/Tool.html#onAnnotPainterUpdated(int>, long, CurvePainter))
* [`AnnotationToolbar::hideButton(AnnotationToolbarButtonId)`](https://sdk.apryse.com/api/android/javadoc/reference/com/pdftron/pdf/controls/AnnotationToolbar.html#hideButton\(com.pdftron.pdf.controls.AnnotationToolbarButtonId\))
* [`AnnotationToolbar::showButton(AnnotationToolbarButtonId)`](https://sdk.apryse.com/api/android/javadoc/reference/com/pdftron/pdf/controls/AnnotationToolbar.html#showButton\(com.pdftron.pdf.controls.AnnotationToolbarButtonId\))
* [`AnnotationToolbar::getGroupItems()`](https://sdk.apryse.com/api/android/javadoc/reference/com/pdftron/pdf/controls/AnnotationToolbar.html#getGroupItems\(\))

### Changed

* \[`Convert::appendUniversalConversion`]\(<https://sdk.apryse.com/api/android/javadoc/reference/com/pdftron/pdf/Convert.html#appendUniversalConversion(com.pdftron.pdf.DocumentConversion>, java.lang.String, com.pdftron.pdf.ConversionOptions)): The type of the parameter changed from `com.pdftron.pdf.WordToPDFOptions` to [`com.pdftron.pdf.ConversionOptions`](https://sdk.apryse.com/api/android/javadoc/reference/com/pdftron/pdf/ConversionOptions.html)
* \[`Convert::universalConversion`]\(<https://sdk.apryse.com/api/android/javadoc/reference/com/pdftron/pdf/Convert.html#universalConversion(java.lang.String>, com.pdftron.pdf.ConversionOptions)): The type of the parameter changed from `com.pdftron.pdf.WordToPDFOptions` to [`com.pdftron.pdf.ConversionOptions`](https://sdk.apryse.com/api/android/javadoc/reference/com/pdftron/pdf/ConversionOptions.html)
* `PDFViewCtrl::openNonPDFUri`: The type of the parameter changed from `com.pdftron.pdf.WordToPDFOptions` to [`com.pdftron.pdf.ConversionOptions`](https://sdk.apryse.com/api/android/javadoc/reference/com/pdftron/pdf/ConversionOptions.html)
* `StampManager::createSignature(android.content.Context, android.graphics.RectF, java.util.LinkedList<java.util.LinkedList<android.graphics.PointF>>, int, float, boolean)` changed to \[`StampManager::createSignature(java.lang.String, android.graphics.RectF, java.util.LinkedList<java.util.LinkedList<android.graphics.PointF>>, int, float)`]\(<https://sdk.apryse.com/api/android/javadoc/reference/com/pdftron/pdf/utils/StampManager.html#createSignature(java.lang.String>, android.graphics.RectF, java.util.LinkedList\<java.util.LinkedList\<android.graphics.PointF>>, int, float))
* \[`Utils::duplicateInDownload`]\(<https://sdk.apryse.com/api/android/javadoc/reference/com/pdftron/pdf/utils/Utils.html#duplicateInDownload(android.content.ContentResolver>, android.net.Uri, java.lang.String)): The return type changed from `java.io.File` to `io.reactivex.Single<java.io.File>`
* \[`Utils::duplicateInDownload`]\(<https://sdk.apryse.com/api/android/javadoc/reference/com/pdftron/pdf/utils/Utils.html#duplicateInDownload(android.content.ContentResolver>, android.net.Uri, java.lang.String)): The type of the parameter changed from `android.content.Context` to `android.content.ContentResolver`

### Renamed

* `ToolManager.ExternalAnnotationManagerListener::generateKey()` to [`ToolManager.ExternalAnnotationManagerListener::onGenerateKey()`](https://sdk.apryse.com/api/android/javadoc/reference/com/pdftron/pdf/tools/ToolManager.ExternalAnnotationManagerListener.html#onGenerateKey\(\))


---

# 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-6/v6-9-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.
