Some test text!

Search
Hamburger Icon

Xamarin / Guides / Config annotation tools

Annotation and PDF interaction customization

Apryse SDK provides various customization options for annotations interacting with documents.

Customize annotation interactions in Xamarin.Android viewer

This tutorial only applies to Xamarin.Android. See Xamarin.iOS equivalent here .

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:

var mToolManager = pdftron.PDF.Config.ToolManagerBuilder.From()
    .Build(this, mPdfViewCtrl);

Build a custom ToolManager programmatically

You can customize the ToolManager programmatically with ToolManagerBuilder:

var mToolManager = pdftron.PDF.Config.ToolManagerBuilder.From()
    .SetEditInk(true)
    .SetOpenToolbar(true)
    .SetBuildInPageIndicator(false)
    .SetCopyAnnot(true)
    .DisableToolModes(new ToolManager.ToolMode[]{
        ToolManager.ToolMode.TextAnnotCreate,
        ToolManager.ToolMode.TextCreate,
        ToolManager.ToolMode.TextSquiggly,
        ToolManager.ToolMode.InkEraser,
        ToolManager.ToolMode.FormCheckboxCreate,
        ToolManager.ToolMode.RectCreate,
        ToolManager.ToolMode.TextLinkCreate
    })
    .Build(this, mPdfViewCtrl);

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:

    var mToolManager = pdftron.PDF.Config.ToolManagerBuilder.From(this, Resource.Style.MyToolManager)
        .Build(this, mPdfViewCtrl);

    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