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