Question regarding PDFTron iOS / Android PDF library

Q:

I am evaluating the iOS sdk and have a few technical questions for you.

  1. Does your SDK provide UI customization? For example, in your sample, can we customize the icons in the PDFViewCtrl class? Another example is can we instead of using long press to popup the annotation options, we would like to use a set of buttons instead.

  2. What is the max support file size?

  3. Zoom option, I noticed that there is a api to set the zoom. Can we use gesture to perform zoom in/out on top of PDFViewCtrl class?

  4. Does your sdk support encrypted pdf, iOS data protection, NSData object, etc?

  5. What is your licensing model?


A:

  1. Does your SDK provide UI customization?..

Yes, the UI is completely customizable, including the icons used in the sample app. You are also able to change the control’s response to user input, including changing the response to a long press and building a toolbar to change tool modes instead. Please see this forum post for more information.

  1. What is the max support file size?

There is no explicit upper limit on file size other than what the iOS file system can handle.

  1. Zoom option, I noticed that there is …

Yes, if you run the included sample application you will see that the standard pinch gesture can be used to zoom. You are also able to implement zooming in response to other gestures.

  1. Does your sdk support encrypted pdf, iOS data protection, NSData object, etc?

Yes, our SDK supports encrypted PDFs. If you open an encrypted PDF document with the sample app, you will be prompted for a password that must be entered correctly before the document will display. If you want to save a PDF document using iOS data protection, you can use the PDFDoc selector SaveToBuf: to save the document to a NSData object, which you can then save using iOS data protection.

  1. What is your licensing model?

Licensing information can be found on our website here: http://www.pdftron.com/store/index.php?gotoPage=pdfnet.html

I have just a couple of more questions for you.

  1. when I zoom in, is there a way to have a scrollbar? So, it gives feedback as to where we are in the page.

  2. Integration - We are evaluating a PDF annotation library to integrate our ipad application that upload/document pdf documents from a cloud storage securely.

a) For protected documents, does your APIs write anything to a disk or just in memory?

b) Can we stream a pdf document (protected or not protected) through NSData to your SDK?

c) After annotation of a document, do you provide APIs to save the modified version to a remote site through webservice, REST or other methods?

Re 1) As the control is based on a UIScrollView, this is essentially an iOS issue. After you zoom in, you should see the scroll bars flash momentarily, indicating where you are in the page. When you are scrolling the page (i.e. tracking), then the scroll indicators are also visible, indicating where you are on the page. I don’t believe iOS provides any method for persisting the scroll indicators on screen when not tracking.

Re 2: Currently PDFNet does not write anything to disk during read/view operations. Data is written to disk only during create/edit operations (which may be the case in the demo version which stamps pages with demo watermark). This can be changed with PDFNet selector SetDiskCaching:NO so that everything is stored in memory (even for create/edit operations).

Re 2b) It is possible to create a new PDFDoc from NSData. Regarding streaming, we are currently working on a downloader that will open and stream a linearized PDF via a http and https connections directly into the viewer. It is not though streamed via an NSData object. Is that an important aspect of your program? One thing to be aware of is that many (most) PDF documents are not linearized, that is the data is not saved in the same order as the pages appears, and so would need to be re-saved (for example with PDFNet using the e_linearized option) before streaming.

Re: 2c) There is no built-in support for saving changes in a document to a remote site. However, we do provide programmatic access to all aspects of a PDF, including annotations, so it would be possible to implement your own annotation serialization method, and send it to a web services powered by PDFNet to update the PDF in question. For a sample of iterating through all annotations in a document, please see the Annotations sample online on our website here: http://www.pdftron.com/pdfnet/samplecode.html#Annotation

Q: Does PDFNet for iOS / Android allow annotating PDF's and storing
annotations?

I can not see it how. Just open PDF's, search text to one document and
changing the
PDF display seems to be implemented.
---------------

A: Using the sample app, you can long press anywhere where there is
not text to bring up a menu that allows you to create annotations. You
can also long press over text to select text in the standard iOS way,
which brings up a menu allowing you to add text based annotations. If
you open a PDF that already has annotations, you can tap them to bring
up a menu that allows you to move, edit or delete them.

Also note that customers are provided with the source code for
libTools.a (tools.jar on Android), where all of our user interaction
is implemented. With the source code, you can easily modify the way
annotations are created or modified, for example by creating a
toolbar.

Q: I would like to have an annotation toolbar like the Acrobat or iAnnotate instead of using long press on the screen to popup the toolbar options. one issue I found is that if I select “hand free” annotation, one my finger is touch up, it stop the “hand free” drawing and I need to long press again to get the toolbar to continue my drawing.

A:

It is certainly possible to create this sort of toolbar using the PDFNet SDK. As mentioned previously, the control’s response to user interaction is implemented in the library libTools.a, and the source code for this library is provided to customers. Let me briefly explain how the tools library works. The main PDF viewing control, PDFViewCtrl, has a tool property, where a tool is defined as a class that conforms to the ToolDelegate protocol defined in PDFViewCtrl.h. When a PDFViewCtrl receives an event, it passes the event data to its tool so that the tool may respond in some way, for example drawing a line or selecting an annotation that already exists. Each main “interaction mode” is implemented as a separate tool, such as one tool for creating ellipses, another for freehand annotations, another for editing existing annotations, etc. With the source code to libTools.a, you can alter any existing tool, or create entirely new ones.

Now that I have hopefully explained how “tools” work, you can see that switching tools is just a matter of assigning the correct tool to PDFViewCtrl’s tool property. This could be done in response to a toolbar button press, e.g.

[pdfViewCtrl setTool:[[[LineCreate alloc] initWithPDFViewCtrl:pdfViewCtrl] autorelease]]

or

[pdfViewCtrl setTool:[[[EllipseCreate alloc] initWithPDFViewCtrl:pdfViewCtrl] autorelease]]

I believe that creating a toolbar on your end would primarily be a matter of creating the iOS GUI elements, and setting PDFViewCtrl’s tool property to the appropriate tool in response to the button press. (You would also disable the longpress menu response, which is quick to do.) Our support team would be available to answer any PDFNet related questions along the way.

Q: I am wrapping up the evaluation with a couple more questions and
found a couple of issues. I have compiled the sample app and deployed
to my ipad2 (running iOS 5.1).

1) I have encountered a few text selection issues on one of your test
pdfs (pdftron_pdf2xps). A few times, text selection skipped a
line.
2) Free hand option, once my touch is up, it stops. For example, is
there a way to code or configure it to behave like the one in adobe
writer.
3) Does your sdk support Print with annotation?
4) Does your sdk support flatten pdf with annotation?

Also, our product management just asked this question. is it
possible to save the annotation data to a xml file, and leave the
original documents. The reason is that we can share the document
without sharing annotation with other people.
-----
A:

Re 1: Text extraction/selection on PDF documents is unfortunately not
a trivial task, and while we have implemented a robust engine for
determining the document's structure, it will occasionally make an
error. This is something that we are working towards improving in
future versions of PDFNet.

Re 2: Yes it is possible to stop the FreeHandCreate tool from
switching back to the PanTool once it has created an annotation. All
aspects of user interaction with the control are implemented in
libTools.a, for which the source code is provided to PDFNet for iOS
customers. The library implements annotation creation, editing,
deletion, form filling, text selection, link following, etc. With the
source code it is possible to change any aspect of the user
interaction, including retaining the free hand creation mode after a
path has been drawn. (In fact there is already a built in property for
this particular behaviour.) However with only the pre-compiled library
(i.e. no source code), it is not possible to make these sorts of
customizations.

Re 3: Yes. While this has always been the case, we released a new
version of the SDK yesterday that has a simple printing API that is
demonstrated in the sample app. If you have not downloaded the SDK
this week, please download again from the same link as before and have
a look.

Re 4: Yes. You can use the PDFDoc selector FlattenAnnotations:NO to
flatten all annotations, and FlattenAnnotations:YES to flatten only
the form annotations.

Re 5: PDFNet provides programmatic access to all aspects of a PDF,
including annotations, so it would be possible to implement your own
annotation serialization method. For a sample of iterating through all
annotations in a document, please see the Annotations sample online on
our website here: http://www.pdftron.com/pdfnet/samplecode.html#Annotation

Q: I want to know, if your PDFTron Mobile PDF SDK for iOS really supports all the Features listed under http://www.pdftron.com/pdfnet/features.html especially the PDF form features (fill and read form fields)?

A:

PDFNet SDK for iOS & Androind supports all the features listed on this page except for the conversion from MS Office (which is available only in the Windows version).

Q: My company is currently developing an Android tablet application that will be deployed on Google Play. The application will require reading and annotating pdf documents.

I have noticed that the library footprints is high. Are you able to provide alternatives that would reduce the footprint?

We could probably shrink the size down to ~4MB. Decreasing file size below 4 MB is probably not technically feasible without loss of core viewing functionality (e.g. files can’t be rendered etc.)

PDFNet comes with ~3.4MB worth of resources (e.g. fonts, cmaps, etc) which are not required for many documents. To decrease the size of initial download, these resources could be downloaded on demand - when referenced for a first time. There are other components of the library that could be optionally removed.

Btw, as a comparison the following are file sizes of some AppStore titles for comparison:

Adobe Reader 5.9 MB

Soonr Scribble 14.2 MB

iAnnotate 15.7 MB

PDF Expert 21.7 MB

Goodreader 23.1 MB

PDF Reader Pro 41.7 MB

Adobe’s offering is the smallest, but also offers by far the least functionality beyond plain viewing. Also they are probably downloading resources on demand (which is not ideal for some users – e.g. for offline access). Also, it is worth mentioning that it is not necessary to include both armeabi and armeabi-v7a libraries. You could just include armeabi library, but it won’t run as fast as armeabi-v7a library when v7 support is available.

Q:

When running PDFTron PDFViewCtrl Demo sample code on Android,
I am not able to launch the view on emulator. The LogCat shows - “Trying to load PDFNetC lib”.
but nothing happens…

A: In order to build the SDK yourself, you have to follow the following steps:

To run a sample project, copy ‘Lib/PDFNet.jar (armeabi/libPDFNetC.so) (armeabi-v7a/libPDFNetC.so)’ to the sample’s ‘libs’ folder, respectively. Note that you may copy both the native libraries under ‘armeabi’ and ‘armeabi-v7a’ to make the output apk both arm v6 and v7 compatible. Android will load the proper library during installation. If you know what arm structure is targeted, you only need to copy one library and remember to DELETE the other empty folder so that Android won’t get confused.

If you have already done this, I guess it is an emulator issue. In fact, I had a lot of hard times with Android emulator and sometimes it simply stops working for no reason. You can try to shut down the emulator completely and then restart it. Then launch the view from Eclipse. Also, sometimes the emulator will report “Not enough memory in emulator” and you can try to address this issue as http://stackoverflow.com/questions/7306373/android-emulator-error-not-enough-memory-in-emulator

Maybe the ultimate solution to this problem is to get a device. J

Q: We are interested in buying the license of Android PDF SDK for our Android Apps rendering PDF files. We have downloaded the trial version and is analyzing the functionality. At the moment, we do have following questions.

  1. Is it possible to customize the layout and designs (seekbar positioning and design, search text input position etc)
  2. Is it possible to add bookmarks (we couldn’t find)
  3. Table of Contents (We couldn’t find it)
  4. Other languages (Non-English content)
  5. Have seen that search results are not displayed in sequence of pages.
  6. Do we get complete source code, and can we modify the source?
  7. Do you have detailed documentation?

A:

  1. PDFViewCtrl itself is just a bare bone PDF viewer and it is included in PDFNet.jar. However, we enhanced it by adding UI features, such as text search, text selection, form filling, annotation editing, etc… The source code of these add-on features comes from Tools.jar. Official customers will have the source code of Tools.jar and hence be able to fully customize the UI and behavior of these add-on features. Therefore, yes, you can easily remove, add features, and customize the UI. Just for a quick test, you can remove the following line mPDFView.Tools.ToolManager(); from PDFViewCtrlDemo.java and see how the bare bone PDFViewCtrl looks like.

  2. Bookmarks and TOC are not built-in and we might add this feature in the future. However, you can easily add them yourself in a separate View. Some discussions on bookmarks can be found from

https://groups.google.com/group/pdfnet-sdk/browse_thread/thread/52b019d77e2c7da4/469079dd6ef32727?lnk=gst&q=bookmarks#469079dd6ef32727

https://groups.google.com/group/pdfnet-sdk/browse_thread/thread/6af58b520d084e2c/76b4d5b0551a4b05?lnk=gst&q=bookmarks#76b4d5b0551a4b05

  1. As discussed in 1, you can fully customize UI, therefore, yes, you can use any other language.

  2. Do you mean that you want all the found instances being listed in some certain View? This is another example of UI customization, I think.

  3. You will have source code of Tools.jar, but not PDFNet.jar. You are free to change Tools.jar to meet your needs.

  4. There is a readme.html in the SDK package and a doc folder. You can also check out the online version from http://www.pdftron.com/pdfnet/mobile/Javadoc/index.html

Q:

I have additional questions.

  • Can it open password protected PDF files?
  • Different language (other than english) PDF support (rendering, search etc).
  • I know that highlights are implemented; is there an API to pull the highlighted data to save separately?

A:

(1) Yes, it can open password protected PDF files. When such a file is provided, PDFViewCtrl will prompt for password. If you want to suppress the prompt, you can call PDFDoc.initStdSecurityHandler(“the password”) first before you call PDFViewCtrl.setDoc().

(2) Yes. Any other languages are supported, including rendering, searching etc., as long as the corresponding font is embedded in the PDF file. If the font is missing you can provide a substitute with PDFNet.setFontSubst().

(3) The easiest way to obtain the string from the highlights is when it is created. In the current implementation, some text is selected first and then highlighted. You can get the current selected text by using PDFViewCtrl.getSeletion. If you only have a highlight annotation to start with, you will have to do more low-level work in order to retrieve the text. However, we are planning to add an auxiliary function for this purpose soon.

(4) Currently, the SDK supports devices running Android 2.2 or newer.

On Wednesday, April 25, 2012 10:24:22 AM UTC-7, Support wrote:

Q: We are interested in buying the license of Android PDF SDK for our Android Apps rendering PDF files. We have downloaded the trial version and is analyzing the functionality. At the moment, we do have following questions.

  1. Is it possible to customize the layout and designs (seekbar positioning and design, search text input position etc)
  2. Is it possible to add bookmarks (we couldn’t find)
  3. Table of Contents (We couldn’t find it)
  4. Other languages (Non-English content)
  5. Have seen that search results are not displayed in sequence of pages.
  6. Do we get complete source code, and can we modify the source?
  7. Do you have detailed documentation?

A:

  1. PDFViewCtrl itself is just a bare bone PDF viewer and it is included in PDFNet.jar. However, we enhanced it by adding UI features, such as text search, text selection, form filling, annotation editing, etc… The source code of these add-on features comes from Tools.jar. Official customers will have the source code of Tools.jar and hence be able to fully customize the UI and behavior of these add-on features. Therefore, yes, you can easily remove, add features, and customize the UI. Just for a quick test, you can remove the following line mPDFView.Tools.ToolManager(); from PDFViewCtrlDemo.java and see how the bare bone PDFViewCtrl looks like.

  2. Bookmarks and TOC are not built-in and we might add this feature in the future. However, you can easily add them yourself in a separate View. Some discussions on bookmarks can be found from

https://groups.google.com/group/pdfnet-sdk/browse_thread/thread/52b019d77e2c7da4/469079dd6ef32727?lnk=gst&q=bookmarks#469079dd6ef32727

https://groups.google.com/group/pdfnet-sdk/browse_thread/thread/6af58b520d084e2c/76b4d5b0551a4b05?lnk=gst&q=bookmarks#76b4d5b0551a4b05

  1. As discussed in 1, you can fully customize UI, therefore, yes, you can use any other language.

  2. Do you mean that you want all the found instances being listed in some certain View? This is another example of UI customization, I think.

  3. You will have source code of Tools.jar, but not PDFNet.jar. You are free to change Tools.jar to meet your needs.

  4. There is a readme.html in the SDK package and a doc folder. You can also check out the online version from http://www.pdftron.com/pdfnet/mobile/Javadoc/index.html

Q: Thanks, this works. Now, i can work with your code. Very thankful to you. Now, I’m in need to implement the below features -

  1. When the word is being selected - Copy, Highlight, Note and Bookmark should shown. Now, the copy, highlight, Cross-out, Underline and squiggly are displayed. How do i change this to my required features. How do i modify with your .jar files.
  • In this case, i can bookmark the word or page. And, i want to displays the bookmarks as list.
  • Color changing the highlight word is enough with present. But, i need to place Color and delete only there. Not the “note” in that quick action bar.
  1. Font options.
  • I cannot use the font option in your jar files. How do i use that. I want to use the font size based on seek-bar. When, the seek bar is increased the font size should change. And, also i can load the new fonts from my assets folder. And, which fonts is being selected that should be appear to current document.
  1. Page Curl Effect.
  • I think you may know about the Page Curl effect in Android. How do i implement that into your project. There’s some features in settings page for only the Single & single continuous and etc. How do i implement the Page Curl by default.

A:

The PDFViewCtrlDemo uses pdftron.PDF.PDFViewCtrl included in PDFNet.jar. It per se is just a bare bone viewer, but we add various functions such as text search, text selection, form filling, annotation editing, etc., through Tools.jar library. The tools in Tools.jar library talk to PDFViewCtrl through PDFViewCtrl.ToolManager and PDFViewCtrl.Tool interfaces. You can turn off all the tools by commenting out the following two lines:

pdftron.PDF.Tools.ToolManager tm = new pdftron.PDF.Tools.ToolManager();

mPDFView.setToolManager™;

in PDFViewCtrlDemo.java.

Note that all the functions in Tools.jar are based on PDFNet.jar. For example, the text search module in Tool.jar is based on pdftron.PDF.TextSearch, and the form filling module is based on pdftron.PDF.Annots. That being said, you are free to write your own Tools.jar to achieve whatever UI factors you want. However, in order to facilitate a quick development, we provide licensed customers the source code to Tools.jar to full customization. So you cannot modify the Tools.jar file right now until you become an official customer.

So for your questions (1) and (2), they are easy to address when you become a licensed customer and have access to the source code of Tools.jar.

For (3), we might consider adding this function as a built-in feature of PDFViewCtrl in the future. However, you can try to implement this feature yourself . One possibility is that you can use pdftron.PDF.PDFDraw class to obtain a page snapshot and then simulate the curling effect (e.g. using https://github.com/harism/android_page_curl).

Q: We would like to use PDFNet Mobile library in order to use it in commercial project.

We’ve noticed one missing feature or problem:

we have been testing the PDFViewCtrl class to use it for the interactive forms rendering.

But we haven’t noticed any signs of interactive form filling features (e.g.

user touches the textfield inside PDF document and the touch keyboard appears).

We have gone through the methods inside the PDFViewCtrl class which could enable the user to interact with interactive forms but with no satisfying results.

Is it a missing feature for mobile library or are we missing something?

A: Yes, interactive form filling is definitely supported and you can try it out using the shipped pre-built PDFViewCtrlDemo.apk. Just launch it and turn to page 3 to try some form filling features.

PDFViewCtrl class is just a bare bore viewer and it doesn’t provide form filling itself. The form filling and other PDF-related functions are provided in PDFNet.jar (or PDFNet.a on iOS). You can see a sample code from:

Java (Android): http://www.pdftron.com/pdfnet/samplecode/InteractiveFormsTest.java

Objective C (iOS): http://www.pdftron.com/pdfnet/samplecode/InteractiveFormsTest.m

So you can use PDFNet.jar (or PDFNet.a on iOS) APIs to manipulate the form data in the PDF file and then tell PDFViewCtrl to update. In fact, we have already implemented various add-on features for PDFViewCtrl, such as form filling, text search, text selection, annotation handling, etc. These functions are included in Tools.jar (or Tools.a on iOS), which extendes the core control with annotation/markup/forms and other feaures. Licensed customers are given the source code of Tools.jar/a for full customization and rapid development.

Q: I forgot to ask if you could think on any advantage of using the 2 PDFTron license’s together: Desktop & Mobile or 3 Mobile Platfroms?

A:

From a licensing perspective, licensing the SDK for multiple platforms (whether desktop or mobile platforms) will entitle you to discounted pricing as a package. From a technical perspective, working with the same SDK on both desktop and mobile side, should reduce your coding efforts as there is no need to eval, learn, test, and work with many different/incomaptible toolkits.

Q: Thanks for the quick answer!

From what I can see in the provided sample code:

http://www.pdftron.com/pdfnet/samplecode/InteractiveFormsTest.java

it creates programatically the interactive form and then the form is also

programatically filled and updated using PDFNet API.

But can it be done by the user? i.e. the user clicks (touches) the textfield

on the screen and fills it by himself, just by typing the letters using his

mobile device?

A: Yes. Definitely. I pointed you to the sample just to show that the APIs are there in PDFNet.jar.

PDFViewCtrl sample shows how to use Tools.jar and use built-in interactive forms/markup support.

On Wednesday, April 25, 2012 12:15:45 PM UTC-7, Support wrote:

Q: We would like to use PDFNet Mobile library in order to use it in commercial project.

We’ve noticed one missing feature or problem:

we have been testing the PDFViewCtrl class to use it for the interactive forms rendering.

But we haven’t noticed any signs of interactive form filling features (e.g.

user touches the textfield inside PDF document and the touch keyboard appears).

We have gone through the methods inside the PDFViewCtrl class which could enable the user to interact with interactive forms but with no satisfying results.

Is it a missing feature for mobile library or are we missing something?


A: Yes, interactive form filling is definitely supported and you can try it out using the shipped pre-built PDFViewCtrlDemo.apk. Just launch it and turn to page 3 to try some form filling features.

PDFViewCtrl class is just a bare bore viewer and it doesn’t provide form filling itself. The form filling and other PDF-related functions are provided in PDFNet.jar (or PDFNet.a on iOS). You can see a sample code from:

Java (Android): http://www.pdftron.com/pdfnet/samplecode/InteractiveFormsTest.java

Objective C (iOS): http://www.pdftron.com/pdfnet/samplecode/InteractiveFormsTest.m

So you can use PDFNet.jar (or PDFNet.a on iOS) APIs to manipulate the form data in the PDF file and then tell PDFViewCtrl to update. In fact, we have already implemented various add-on features for PDFViewCtrl, such as form filling, text search, text selection, annotation handling, etc. These functions are included in Tools.jar (or Tools.a on iOS), which extendes the core control with annotation/markup/forms and other feaures. Licensed customers are given the source code of Tools.jar/a for full customization and rapid development.

I’m bundling up an android app which has the PDFTron library in to use on a Blackberry playbook – do you know if this is possible?

I just had a quick look at this issue and it probably will NOT run due to the use of the native library (libPDFNetC.so).

“It should be noted that not every Android application is expected to work on the Player. Android NDK apps that use C and C++ libraries will not function — only apps that are written specifically to the Android Gingerbread 2.3.x implementation of the Dalvik VM will run.”

http://www.zdnet.com/blog/perlow/blackberry-playbook-20-android-support-a-work-in-progress/19118

I think this makes sense since the PlayBook’s Android Player is probably only able to emulate the Dalvik VM code, but not the native code specific to Android.

Q:

I see that the PDFNet SDK works on Android, but does the add-on for PDF to XPS API conversion work on Android as well?

A:

Yes, both PDF to XPS (and XPS to PDF) also work on Android/iOS.

Q:

I have some additional questions regarding PDFTron Mobile PDF SDKs (iOS, Android, Win8, etc)

  1. Is there an eraser function for ink annotations?
  2. Can we filter the slides that show up on the screen? Or do we always have to show the entire document?
  3. Is there a page by page vertical scrolling view?
  4. Can we launch PDFtron annotation tools from our UI controllers instead of tapping and holding on the screen?
  5. Can we turn off or have set values for certain annotation features? (ie. color for free-hand)
  6. Can we disable entirely certain PDFtron annotation tools? (ie. text, etc…)
  7. Is there undo/redo logic?

A: For a background summary of how customizing PDFViewCtrl is implemented, please see other articles in this discussion:

  1. Is there an eraser function for ink annotations?

    There is no built-in eraser, but it is certainly possible to write a new tool that acts as one.

  2. Can we filter the slides that show up on the screen? Or do we always have to show the entire document?

    You can modify the PDF document before or while it is being displayed (including removing pages). For example PageTest sample (btw you don’t need to save your changes before passing doc to PDFViewCtrl)

  3. Is there a page by page vertical scrolling view?

    Currently no, but this is a feature that, if required, would not be difficult to add.

  4. Can we launch PDFtron annotation tools from our UI controllers instead of tapping and holding on the screen?

    Yes, as explained the forum post, you just need to set PDFViewCtrl’s tool property, so you can do this by any means.

  5. Can we turn off or have set values for certain annotation features? (ie. color for free-hand)

    Yes, you can customize the tool code to eliminate the ability to change certain annotation properties, and set defaults for new ones.

  6. Can we disable entirely certain PDFtron annotation tools? (ie. text, etc…)

    Yes, this is very easy to do.

  7. Is there undo/redo logic?

    Currently there is no built-in support, but we have this feature on our roadmap. (We also have customers that have added undo/redo on their side using the existing APIs.)

Update: Starting with version 6.1.0 of the Android PDFNet SDK, the Tools library is now shipped as an Android Library, and its source code can be found in the samples folder. The package does not include the Tools.jar anymore, and you now have the flexibility to include the source directly into your project or create a separate library for your projects.

Update: Starting with version 6.1.0 of the Android PDFNet SDK, the Tools library is now shipped as an Android Library, and its source code can be found in the samples folder. The package does not include the Tools.jar anymore, and you now have the flexibility to include the source directly into your project or create a separate library for your projects.

Update: Starting with version 6.1.0 of the Android PDFNet SDK, the Tools library is now shipped as an Android Library, and its source code can be found in the samples folder. The package does not include the Tools.jar anymore, and you now have the flexibility to include the source directly into your project or create a separate library for your projects.