Some test text!

keyboard_arrow_down

Get started

Download PDFTron SDK
play_arrow

Quick start - view a document

Integrate with NuGetIntegrate manuallyRun samplesAdd license keyUpdate to latest version
keyboard_arrow_down

Xamarin.Forms

keyboard_arrow_down

Fundamentals

keyboard_arrow_down

FAQ

System requirementsPDFTron full vs. standardReduce size of APK
keyboard_arrow_down

Document Viewer

keyboard_arrow_down

Document Viewer components

keyboard_arrow_down

Annotation and collaboration

OverviewToolManager setupRead only mode
play_arrow

Disable annotation creation and editing

play_arrow

Default annotation properties

play_arrow

Change tool mode

play_arrow

Events

play_arrow

Override annotation handling

Show and hide existing annotationsRealtime collaboration
keyboard_arrow_down

Advanced customization

play_arrow

Add a custom view to a page

Create a custom toolPage coloring modePage fit modePage layout modeScrolling direction
keyboard_arrow_down

Conversion

keyboard_arrow_down

Parsing and extraction

keyboard_arrow_down

Digital signatures

keyboard_arrow_down

Search

keyboard_arrow_down

Advanced topics

keyboard_arrow_down

Troubleshooting

keyboard_arrow_down

Reference

keyboard_arrow_down

PDF Processing API

What is PDFNet?Opening a documentSerializing (saving) a documentWorking with pagesWorking with Page ContentWorking with BookmarksWorking with Interactive Forms (AcroForms)PDF SecurityLow-level PDF APIError handling
Realtime collaborationkeyboard_arrow_down

Realtime collaboration

In this document
chevron_rightRequirements
chevron_rightInitializing and sending annotation changes
chevron_rightReceiving annotation changes
chevron_rightJump to annotation
This tutorial only applies to Xamarin.Android.

PDFTron supports annotation syncing between different clients to allow for collaboration. All the required locking, change tracking, merging and view updating are handled internally. Below are instructions on how to handle the import and export of annotation changes on the client side. While the server component is not described here, that implementation would be straightforward. The server would receive XFDF XML data, which it would then pass onto all other active clients that are part of the collaboration session. The clients take care of the updating. The server can store any XFDF data as it likes, since the data is just an XML string.

linkRequirements

Here are a few requirements for syncing to work as expected:

  • A permanent and unique string identifier is needed for the userId. UserId needs to be permanent and cannot be changed later on. For example, if Alice was used for the userId, however, was later changed to AliceB, the viewer will no longer treat it as the same user. Therefore, we recommend that you generate a UUID for each user.
  • Similar to userId, each annotation will also need its own UUID, aka annotId. This UUID also needs to be permanent and unique.
  • Annotation changes are stored as XFDF command strings, which PDFNet generates when changes are made. However, any custom modification to the XFDF command string could lead to unexpected results, thus, modification to the XFDF command string are not recommended.
  • Existing annotations that do not have a unique identifier will not work, it is recommended that you pre-process all annotations to make sure they all have unique identifiers.
  • Undo and redo will be automatically enabled upon using annotation syncing.

linkInitializing and sending annotation changes

Add the following after ToolManager is initialized:

linkReceiving annotation changes

When an annotation change event is received from a remote service, add the following to notify the viewer about the change:

linkJump to annotation

To jump to an annotation by id: