Some test text!

Search
Hamburger Icon

Android / Guides / Config annotation tools

Customize ToolManager

You will need to use ToolManager for PDF interaction tools to work. You can build it easily using ToolManagerBuilder, a helper class for configuring and creating ToolManager. It also sets ToolManager to a specific PDFViewCtrl.

Build a default ToolManager

To build a default ToolManager, use ToolManagerBuilder and pass in an instance of PDFViewCtrl:

ToolManager mToolManager = ToolManagerBuilder.from()
    .build(getActivity(), pdfViewCtrl);

Build a custom ToolManager programmatically

You can customize the ToolManager programmatically with ToolManagerBuilder:

ToolManager mToolManager = ToolManagerBuilder.from()
    .setEditInk(true)
    .setOpenToolbar(true)
    .setBuildInPageIndicator(false)
    .setCopyAnnot(true)
    .disableToolModes(new ToolManager.ToolMode[]{
        ToolManager.ToolMode.TEXT_ANNOT_CREATE,
        ToolManager.ToolMode.TEXT_CREATE,
        ToolManager.ToolMode.TEXT_SQUIGGLY,
        ToolManager.ToolMode.INK_ERASER,
        ToolManager.ToolMode.FORM_CHECKBOX_CREATE,
        ToolManager.ToolMode.RECT_CREATE,
        ToolManager.ToolMode.TEXT_LINK_CREATE
    })
    .build(getActivity(), pdfViewCtrl);

Supporting image stamp and image signatures

Image stamps and image signatures require a source image in order to create the annotation. If you are using PDFViewCtrl with ToolManager, will need to handle this manually in your app by implementing the methods ToolManager.AdvancedAnnotationListener.imageStamperSelected(PointF) and ToolManager.AdvancedAnnotationListener.imageSignatureSelected(PointF, int, Long).

For reference you can check out our PDFViewCtrl integration guide here

Build a custom ToolManager with style

You can also customize the ToolManager by defining an Android style resource and passing it to ToolManagerBuilder:

  1. Create a custom style in your res/values/styles.xml file:

    <style name="MyToolManager">
        <!-- allow editing ink annotations (only works if annotation toolbar is present) -->
        <item name="edit_ink_annots">true</item>
        <!-- when ink selected in annotation toolbar, it should open its own ink toolbar -->
        <item name="open_toolbar_on_pan_ink_selected">true</item>
        <!-- hide the built-in page number indicator -->
        <item name="build_in_page_number_indicator">false</item>
        <!-- whether to copy marked-up text of TextMarkup annot to annotation's 'content' property upon TextMarkup annotation creation -->
        <item name="copy_annotated_text_to_note">true</item>
        <!-- remove some tools from AnnotationToolbarComponent and QuickMenu -->
        <item name="disable_tool_modes">@array/disable_tool_modes</item>
    </style>

    For additional customization, a list of supported style attributes are defined in this table.

  2. In the previous step, @array/disable_tool_modes is a string array defining tool modes that should be disabled. You can define it in res/values/arrays.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <string-array name="disable_tool_modes">
            <item>TEXT_ANNOT_CREATE</item>
            <item>TEXT_CREATE</item>
            <item>TEXT_SQUIGGLY</item>
            <item>INK_ERASER</item>
            <item>FORM_CHECKBOX_CREATE</item>
            <item>RECT_CREATE</item>
            <item>TEXT_LINK_CREATE</item>
        </string-array>
    </resources>

    Each <item> in the array needs to be a string matching one of the enum values from ToolManager.ToolMode.

    You can also set up ToolManagerBuilder programmatically. For a list of settings available, see the ToolManagerBuilder API.
  3. Lastly, build the ToolManager using ToolManagerBuilder and pass in your custom style and an instance of PDFViewCtrl:

    ToolManager mToolManager = ToolManagerBuilder.from(context, R.style.MyToolManager)
        .build(getActivity(), pdfViewCtrl);

    Alternatively, you can pass the ToolManager style resource directly to ViewerConfig.Builder. You can learn more about configuring ToolManager with ViewerConfig in the viewer configuration guides.

XML style attributes

AttributesDescriptionFormat
edit_ink_annotsControls whether editing ink annotations is allowed (only works if annotation toolbar is present)

Default value: false
Format: boolean
open_toolbar_on_pan_ink_selectedWhether annotation toolbar should open when Ink is selected from quick menu (only works if annotation toolbar is present)

Default value: false
Format: boolean
build_in_page_number_indicatorWhether to use/show the built-in page number indicator

Default value: true
Format: boolean
annot_permission_checkWhether to check annotation author's permission

Default value: false
Format: boolean
show_author_dialogWhether to show author dialog the first time the user annotates

Default value: false
Format: boolean
copy_annotated_text_to_noteWhether to copy marked-up text of TextMarkup annot to annotation's 'content' property upon TextMarkup annotation creation

Default value: false
Format: boolean
stylus_as_penWhether to enable using stylus to draw without having to enter ink tool

Default value: false
Format: boolean
ink_smoothing_enabledWhether to smooth ink annotations

Default value: true
Format: boolean
auto_select_annotationWhether to auto-select annotations after they are created

Default value: true
Format: boolean
quick_menu_disableWhether disable showing quick menu

Default value: false
Format: boolean
double_tap_to_zoomWhether double-tapping should zoom the viewer

Default value: true
Format: boolean
auto_resize_freetextWhether can auto resize free text bounding box when editing

Default value: false
Format: boolean
realtime_annot_editWhether annotation editing is real time

Default value: true
Format: boolean
edit_freetext_on_tapWhether can edit freetext on tap

Default value: false
Format: boolean
show_saved_signaturesWhether can show saved signatures in signature dialog

Default value: true
Format: boolean
show_annot_indicatorWhether can show indicator for annotations with comments

Default value: true
Format: boolean
disable_tool_modesArray of tools to disable

Default value: null
Format: reference
disable_annot_editing_by_typesArray of annotation types to disable editing

Default value: null
Format: reference

Trial setup questions? Ask experts on Discord
Need other help? Contact Support
Pricing or product questions? Contact Sales