> 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-11/v11-6-0.md).

# Version 11.6.0 Changelog (July 9, 2025)

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

Version: 11.6.0.85755

Release Date: July 9, 2025

## Notes

This release of Apryse for Android brings the core PDF functionality inline with version 11.6.0 of the Apryse cross-platform APIs. Most non-module related changes apply to Android.

## New

* Now targeting Android 15
* Added 2 new measurement tool scale translate units: fraction in and fraction ft-in
* Added APIs to define fraction precision array for measurement tools such as ruler, perimeter and area measurement tools: `AnnotStyleProperty.MeasurementFractionPrecision`

## Fixes

* Fixed issue where document slider would not work properly in reflow mode
* Fixed issue where copy text option would not appear in read-only mode
* Fixed issue where fill style would not appear for area measurement tools
* Fixed issue where precision would not appear for cloudy border area measurement tools

## APIs

### PDFViewCtrlTools package

#### ToolStyleConfig

\*new\* method: \`String getCustomRulerDisplay(Context, int, String)\` \*new\* method: \`String getDefaultRulerDisplay(Context, int)\` \*new\* method: \`String getDefaultRulerDisplay(Context, int, int)\` \*new\* method: \`String getRulerDisplayKey(int, String)\`

#### Theme

\*new\* constructor: \`Theme(int, int, int, int, int, int, int, int, int, int, int, int)\` \*new\* final field: \`int disabledTextColor\` \*removed\* constructor: \`Theme(int, int, int, int, int, int, int, int, int, int, int)\`

#### AnnotStyle

\*new\* method: \`String getMeasureDisplay()\` \*new\* method: \`MeasurementTranslateUnit getMeasurementTranslateUnit()\` \*new\* method: \`boolean isDecimalPrecision()\` \*new\* method: \`boolean isFractionPrecision()\` \*new\* method: \`void setRulerTranslateUnit(MeasurementTranslateUnit)\` \*removed\* static final field: \`String KEY\_PDFTRON\_RULER\` \*removed\* method: \`void setRulerTranslateUnit(String)\`

#### AnnotStyleProperty

\*new\* method: \`MeasurementFractionPrecision\[] getMeasurementFractionPrecisions()\` \*new\* method: \`AnnotStyleProperty setMeasurementFractionPrecisions(MeasurementFractionPrecision\[])\`

#### MeasurementFractionPrecision

\*new\* final class: \`MeasurementFractionPrecision\` \*new\* static final field: \`MeasurementFractionPrecision FIVE\` \*new\* static final field: \`MeasurementFractionPrecision FOUR\` \*new\* static final field: \`MeasurementFractionPrecision ONE\` \*new\* static final field: \`MeasurementFractionPrecision THREE\` \*new\* static final field: \`MeasurementFractionPrecision TWO\` \*new\* static final field: \`MeasurementFractionPrecision ZERO\` \*new\* static method: \`MeasurementFractionPrecision fromLabel(String)\` \*new\* static method: \`MeasurementFractionPrecision fromPosition(int)\` \*new\* method: \`String getLabel()\` \*new\* method: \`int getPosition()\` \*new\* static method: \`MeasurementFractionPrecision valueOf(String)\` \*new\* static method: \`MeasurementFractionPrecision\[] values()\`

#### MeasurementTranslateUnit

\*new\* static final field: \`MeasurementTranslateUnit FRACTION\_FT\_IN\` \*new\* static final field: \`MeasurementTranslateUnit FRACTION\_IN\` \*new\* static method: \`MeasurementTranslateUnit fromUnit(String, String)\` \*new\* method: \`String getDisplay()\` \*new\* method: \`boolean isFeetInch()\` \*removed\* static method: \`MeasurementTranslateUnit fromLabel(String)\`

#### RulerItem

\*new\* constructor: \`RulerItem(float, String, float, String, int, String)\` \*new\* field: \`String mDisplay\` \*removed\* constructor: \`RulerItem(float, String, float, String, int)\` \*removed\* static method: \`RulerItem getRulerItem(Annot)\` \*removed\* static method: \`void removeRulerItem(Annot)\`

#### MeasureImpl

\*new\* method: \`MeasureInfo getFirstMeasure()\` \*new\* method: \`List\<MeasureInfo> getMeasureList()\` \*new\* method: \`String getMeasurementText(double, List\<MeasureInfo>)\`

#### MeasureUtils

\*new\* static final field: \`String DISPLAY\_DECIMAL\` \*new\* static final field: \`String DISPLAY\_DEFAULT\` \*new\* static final field: \`String DISPLAY\_FRACTION\` \*new\* static final field: \`String FEET\_SYMBOL\` \*new\* static final field: \`String INCH\_SYMBOL\` \*new\* static final field: \`int PRECISION\_FRACTION\_DEFAULT\` \*new\* static final field: \`String PRECISION\_FRACTION\_FIVE\` \*new\* static final field: \`String PRECISION\_FRACTION\_FOUR\` \*new\* static final field: \`String PRECISION\_FRACTION\_ONE\` \*new\* static final field: \`String PRECISION\_FRACTION\_THREE\` \*new\* static final field: \`String PRECISION\_FRACTION\_TWO\` \*new\* static final field: \`int PRECISION\_FRACTION\_VALUE\_FIVE\` \*new\* static final field: \`int PRECISION\_FRACTION\_VALUE\_FOUR\` \*new\* static final field: \`int PRECISION\_FRACTION\_VALUE\_ONE\` \*new\* static final field: \`int PRECISION\_FRACTION\_VALUE\_THREE\` \*new\* static final field: \`int PRECISION\_FRACTION\_VALUE\_TWO\` \*new\* static final field: \`int PRECISION\_FRACTION\_VALUE\_ZERO\` \*new\* static final field: \`String PRECISION\_FRACTION\_ZERO\` \*new\* static final field: \`String U\_FT\_IN\_FRACTION\` \*new\* static method: \`double convertToUnit(double, String, String)\` \*new\* static method: \`Map\<String, Map\<String, Double>> getConversionDictionary()\` \*new\* static method: \`MeasureInfo getDefaultArea()\` \*new\* static method: \`MeasureInfo getDefaultAxisInfo()\` \*new\* static method: \`MeasureInfo getDefaultDistance()\` \*new\* static method: \`MeasureInfo getDefaultMeasureInfo(int)\` \*new\* static method: \`Integer getFractionPrecision(int)\` \*new\* static method: \`int getFractionPrecisionPosition(int)\` \*new\* static method: \`HashMap\<String, Integer> getFractionPrecisions()\` \*new\* static method: \`List\<MeasureInfo> getMeasureInfoList(int, JSONObject)\` \*new\* static method: \`List\<MeasureInfo> getMeasureInfoList(String)\` \*new\* static method: \`List\<MeasureInfo> getMeasureInfoList(JSONArray)\` \*new\* static method: \`String getMeasurementText(double, List\<MeasureInfo>)\` \*new\* static method: \`boolean isAreaMeasure(int)\` \*new\* static method: \`boolean isDistanceMeasure(int)\` \*new\* static method: \`String toMeasureInfoJSON(MeasureInfo)\` \*removed\* static method: \`int getPrecision(int, JSONObject)\` \*removed\* static method: \`int safeGetInt(JSONObject, String, int)\` \*removed\* static method: \`JSONObject safeGetJSON(JSONObject, String)\` \*removed\* static method: \`String safeGetString(JSONObject, String)\` \*modified\* static method: \`HashMap\<String, Double> getUnitConversion()\` \<i>\</i> | Declaration--- | ---| From: | public static HashMap\<String,Double> getUnitConversion() || To: | public static Map\<String,Double> getUnitConversion() |

#### UnitConverter

\*removed\* class: \`UnitConverter\` \*removed\* constructor: \`UnitConverter(float)\` \*removed\* static final field: \`String CM\` \*removed\* static final field: \`String INCH\` \*removed\* static final field: \`String INCH\_SHORT\` \*removed\* static final field: \`String YARD\` \*removed\* static final field: \`String YARD\_SHORT\` \*removed\* static method: \`float cmToInches(float)\` \*removed\* static method: \`float cmToYard(float)\` \*removed\* static method: \`UnitConverter convert(float)\` \*removed\* method: \`UnitConverter from(String)\` \*removed\* static method: \`String getDisplayUnit(String)\` \*removed\* static method: \`float inchesToCm(float)\` \*removed\* static method: \`float inchesToYard(float)\` \*removed\* static method: \`float pointsToInches(float)\` \*removed\* method: \`float to(String)\`

#### DocumentSlider

\*new\* method: \`void setReflowControl(ReflowControl)\`


---

# 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-11/v11-6-0.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.
