Some test text!
Android / Guides / Config annotation tools
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
.
To build a default ToolManager
, use ToolManagerBuilder
and pass in an instance of PDFViewCtrl
:
ToolManager mToolManager = ToolManagerBuilder.from()
.build(getActivity(), pdfViewCtrl);
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);
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
You can also customize the ToolManager
by defining an Android style resource and passing it to ToolManagerBuilder
:
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.
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
.
ToolManagerBuilder API
.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.
Attributes | Description | Format |
---|---|---|
edit_ink_annots | Controls whether editing ink annotations is allowed (only works if annotation toolbar is present) Default value: false | Format: boolean |
open_toolbar_on_pan_ink_selected | Whether 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_indicator | Whether to use/show the built-in page number indicator Default value: true | Format: boolean |
annot_permission_check | Whether to check annotation author's permission Default value: false | Format: boolean |
show_author_dialog | Whether to show author dialog the first time the user annotates Default value: false | Format: boolean |
copy_annotated_text_to_note | Whether to copy marked-up text of TextMarkup annot to annotation's 'content' property upon TextMarkup annotation creation Default value: false | Format: boolean |
stylus_as_pen | Whether to enable using stylus to draw without having to enter ink tool Default value: false | Format: boolean |
ink_smoothing_enabled | Whether to smooth ink annotations Default value: true | Format: boolean |
auto_select_annotation | Whether to auto-select annotations after they are created Default value: true | Format: boolean |
quick_menu_disable | Whether disable showing quick menu Default value: false | Format: boolean |
double_tap_to_zoom | Whether double-tapping should zoom the viewer Default value: true | Format: boolean |
auto_resize_freetext | Whether can auto resize free text bounding box when editing Default value: false | Format: boolean |
realtime_annot_edit | Whether annotation editing is real time Default value: true | Format: boolean |
edit_freetext_on_tap | Whether can edit freetext on tap Default value: false | Format: boolean |
show_saved_signatures | Whether can show saved signatures in signature dialog Default value: true | Format: boolean |
show_annot_indicator | Whether can show indicator for annotations with comments Default value: true | Format: boolean |
disable_tool_modes | Array of tools to disable Default value: null | Format: reference |
disable_annot_editing_by_types | Array 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