Some test text!
Xamarin / Guides / Config annotation tools
Apryse SDK provides various customization options for annotations interacting with documents.
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
:
var mToolManager = pdftron.PDF.Config.ToolManagerBuilder.From()
.Build(this, mPdfViewCtrl);
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);
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
:
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.
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