Some test text!

Loading...
Guides

Version 9.1.0 Changelog (September 8, 2021)

Version: 9.1.0.78529

Release Date: September 8, 2021

New features

  • Adds support for custom font / stroke color / thickness / fill color / opacity in the freetext with rich content
  • Adds support for adding and modifying text markup annotations in the reader (reflow) mode (Nougat+)
annot-in-reflow
  • Adds ability to search in the user bookmarks, outline and annotations list
Search in Annotation ListSearch in OutlineSearch in User Bookmarks
search-annot-listsearch-outlinesearch-bookmark

Dependency changes

  • AndroidX libs are updated from 1.0.0 to 1.2.0
  • com.google.android.material:material is updated from 1.0.0 to 1.4.0
  • androidx.constraintlayout:constraintlayout is updated from 1.1.3 to 2.1.0

Notes

This release of PDFTron for Android brings the core PDF functionality inline with version 9.1.0 of the PDFTron cross-platform APIs. More information can be found on What's new for cross-platform APIs . All none-module related changes apply to Android.

Fixed

  • Matches Web behaviour where the first comment by the same author is added as comment instead of reply
  • Fixes issue where annotation without ID in XFDF does not appear in the collaboration viewer
  • Fixes issue where grouped annotations do not show copy option
  • Fixes issue where toolbars have extra padding when fullscreenModeEnabled is false
  • Various fixes for the outline UI

APIs

PDFViewCtrlTools package

HtmlPostProcessColorTask

removed class: HtmlPostProcessColorTask

removed constructor: HtmlPostProcessColorTask(Context, String)

removed method: void setCallback(Callback)

removed method: void setOnPostProcessColorListener(OnPostProcessColorListener)

HtmlPostProcessColorTask.Callback

removed interface: Callback

removed method: void onPostProcessColorFinished(HtmlPostProcessColorTask, String)

LoadFontAsyncTask

new method: void setIsCustomFont(boolean)

PopulateUserBookmarkListTask

new constructor: PopulateUserBookmarkListTask(Context, String, Bookmark, boolean, String)

removed constructor: PopulateUserBookmarkListTask(Context, String, Bookmark, boolean)

ToolManagerBuilder

new method: ToolManagerBuilder setFreeTextFontsFromAssets(String[])

new method: ToolManagerBuilder setFreeTextFontsFromStorage(String[])

ViewerConfig

new method: int[] getExcludedAnnotationListTypes()

new method: int[] getHideSaveCopyOptions()

new method: int[] getPresetBarsToHide()

new method: boolean isShowAnnotationReplyReviewState()

ViewerConfig.Builder

new method: Builder excludeAnnotationListTypes(int[])

new method: Builder hidePresetBars(ToolbarButtonType[])

new method: Builder hideSaveCopyOptions(int[])

new method: Builder showAnnotationReplyReviewState(boolean)

AnnotStyleView

new method: void setFontListFromAsset(Set<String>)

new method: void setFontListFromStorage(Set<String>)

AnnotationDialogFragment

new static final field: String BUNDLE_ANNOTATION_TYPE_EXCLUDE_LIST

new method: String getQueryText()

new method: boolean handleBackPress()

new method: void initOptionsMenu(Menu)

new method: void onPause()

new method: boolean onQueryTextChange(String)

new method: boolean onQueryTextSubmit(String)

new method: void resetAnnotationListSearchFilter()

modified class: AnnotationDialogFragment

Declaration
From:public class AnnotationDialogFragment extends NavigationListDialogFragment
To:public class AnnotationDialogFragment extends NavigationListDialogFragment implements OnQueryTextListener

OutlineDialogFragment

new static final field: String BUNDLE_CREATE_BUTTON

new static final field: String BUNDLE_EDIT_BUTTON

new method: void exitEditMode(Boolean)

new method: String getQueryText()

new static method: OutlineDialogFragment newInstance(boolean, String, String)

new method: boolean onQueryTextChange(String)

new method: boolean onQueryTextSubmit(String)

new method: void onResume()

new method: void prepareOutlineSearch(Menu)

new method: void resetBookmarkListFilter()

new method: void setEditButtonText(String, String)

removed method: void exitEditMode()

removed static method: OutlineDialogFragment newInstance(boolean)

modified class: OutlineDialogFragment

Declaration
From:public class OutlineDialogFragment extends NavigationListDialogFragment implements BookmarkNodeClickListener,OnTreeNodeListener,EditOutlineMoveClickListener
To:public class OutlineDialogFragment extends NavigationListDialogFragment implements OnQueryTextListener,BookmarkNodeClickListener,OnTreeNodeListener,EditOutlineMoveClickListener

PdfViewCtrlTabBaseFragment

new method: String getFileName(boolean, String)

new method: void handleViewSelectedFileAttachment(File, ExternalFileInfo, Uri)

SaveFolderWrapper

new constructor: SaveFolderWrapper(PdfViewCtrlTabBaseFragment, Uri)

new method: Uri getTargetUri()

removed method: String getFileName(boolean, String)

ReflowControl

new method: void setAnnotStyleProperties(HashMap<Integer, AnnotStyleProperty>)

new method: void setEditingEnabled(boolean)

ReflowPagerAdapter

new method: boolean isEditingEnabled()

new method: void setAnnotStyleProperties(HashMap<Integer, AnnotStyleProperty>)

new method: void setEditingEnabled(boolean)

removed method: void RequestHandlerProc(JobRequestResult, String, Object)

modified class: ReflowPagerAdapter

Declaration
From:public class ReflowPagerAdapter extends PagerAdapter implements ReflowWebViewCallback,RequestHandlerCallback
To:public class ReflowPagerAdapter extends PagerAdapter implements ReflowWebViewCallback

ReflowAppCallback

new interface: ReflowAppCallback

new method: void onAnnotClicked(String, String)

new method: void onCleanSelectedAnnot()

ReflowAppInterface

new class: ReflowAppInterface

new static final field: String sName

new method: void annotClicked(String, String)

new method: void cleanSelectedAnnot()

new method: String setAnnot(String, int)

new method: void showToast(String)

UserBookmarkDialogFragment

new method: String getQueryText()

new method: boolean handleBackPress()

new method: boolean onQueryTextChange(String)

new method: boolean onQueryTextSubmit(String)

new method: void prepareOptionsMenu(Menu)

new method: void resetBookmarkListFilter()

modified class: UserBookmarkDialogFragment

Declaration
From:public class UserBookmarkDialogFragment extends NavigationListDialogFragment
To:public class UserBookmarkDialogFragment extends NavigationListDialogFragment implements OnQueryTextListener

BookmarksDialogFragment

new method: void updateEditButtonText(String, String)

AnnotationListUtil

new static method: Observable<List<AnnotationInfo>> from(PDFViewCtrl, ArrayList<Integer>)

new static method: AnnotationInfo toAnnotationInfo(Annot, Page, TextExtractor, ArrayList<Integer>)

removed static method: Observable<List<AnnotationInfo>> from(PDFViewCtrl)

removed static method: AnnotationInfo toAnnotationInfo(Annot, Page, TextExtractor)

ReflowAnnotEditAdapter

new class: ReflowAnnotEditAdapter

new constructor: ReflowAnnotEditAdapter(List<ReflowAnnotEditItem>)

new method: int getItemCount()

new method: void onBindViewHolder(ViewHolder, int)

new method: void onBindViewHolder(ContentViewHolder, int)

new method: ViewHolder onCreateViewHolder(ViewGroup, int)

ReflowAnnotEditBottomSheetDialog

new class: ReflowAnnotEditBottomSheetDialog

new constructor: ReflowAnnotEditBottomSheetDialog(Context)

new static final field: int ITEM_DELETE

new static final field: int ITEM_STYLE

new method: void setOnItemClickListener(OnItemClickListener)

ReflowAnnotEditItem

new class: ReflowAnnotEditItem

new constructor: ReflowAnnotEditItem(int, int)

new method: int getIcon()

new method: int getTitle()

FontResource

new static final field: String FONT_FOLDER

new static method: Single<Set<String>> writeFontAssetsToCache(Context, Set<String>)

new static method: Single<Set<String>> writeFontFileToCache(Context, Set<String>)

AnnotEdit

new method: void setupAnnotProperty(AnnotStyle)

ToolManager

new method: Set<String> getFreeTextFontsFromAssets()

new method: Set<String> getFreeTextFontsFromStorage()

new method: void setFreeTextFontsFromAssets(Set<String>)

new method: void setFreeTextFontsFromStorage(Set<String>)

AnnotUtils

new static method: void createCustomFreeTextAppearance(View, PDFViewCtrl, Annot, int, Rect, boolean, AnnotStyle)

new static method: void createRCFreeTextAppearance(PTRichEditor, PDFViewCtrl, Annot, int, AnnotStyle)

new static method: Annot getAssociatedAnnotation(PDFViewCtrl, SignatureWidget, int)

removed static method: void createRCFreeTextAppearance(PTRichEditor, PDFViewCtrl, Annot, int)

BookmarkManager

new static method: ArrayList<Bookmark> getBookmarkListByTitle(PDFDoc, String, boolean)

new static method: List<UserBookmarkItem> getPdfBookmarks(Bookmark, String)

new static method: List<UserBookmarkItem> getPdfBookmarks(PDFDoc, String)

new static method: List<UserBookmarkItem> getUserBookmarks(Context, String, String)

InlineEditText

new method: void setFontResource(FontResource)

ReflowWebView

new method: void finishActionMode()

new method: void setTextSelectionCallback(TextSelectionCallback)

new method: ActionMode startActionMode(Callback)

new method: ActionMode startActionMode(Callback, int)

TextSelectionCallback

new interface: TextSelectionCallback

new method: boolean onMenuItemClick(WebView, MenuItem)

RequestCode

new static final field: int CREATE_FILE_IN_SYSTEM

Utils

new static method: File copyAssetsToTempFolder(Context, String, String, boolean)

removed static method: String getRealPathFromURI(Context, Uri)

ViewerUtils

new static method: void createFileIntent(Activity, Fragment, String, String)

new static method: String extractFileFromPortfolio(int, Context, PDFDoc, String, Uri, String)

new static method: Single<String> extractFileFromPortfolioDisposable(int, Context, PDFDoc, String, Uri, String)

removed static method: Single<String> extractFileFromPortfolioDisposable(int, Context, PDFDoc, String, String)

AutoScrollEditText

new method: void setDrawBackground(boolean)

new method: void setSize(float, float)

BottomBarBuilder

new method: BottomBarBuilder addCustomSelectableButton(int, int, int)

PresetBarComponent

new constructor: PresetBarComponent(LifecycleOwner, FragmentManager, PresetBarViewModel, ToolManagerViewModel, PresetBarView, HashSet<ToolbarButtonType>)

ToolbarButtonType

removed static final field: ToolbarButtonType TOOLBAR_SWITCHER

AnnotationToolbarComponent

new method: void setToolbarItemGravity(int)

TabletAnnotationToolbarComponent

new constructor: TabletAnnotationToolbarComponent(Fragment, FragmentManager, AnnotationToolbarViewModel, PresetBarViewModel, ToolManagerViewModel, AnnotationToolbarView, boolean, HashSet<ToolbarButtonType>)

removed constructor: TabletAnnotationToolbarComponent(Fragment, FragmentManager, AnnotationToolbarViewModel, PresetBarViewModel, ToolManagerViewModel, AnnotationToolbarView, boolean)

ActionToolbar

new method: void setToolbarItemGravity(int)

AnnotationToolbarView

new method: void setToolbarItemGravity(int)

TreeViewAdapter

new method: void addChildNode(TreeNode<BookmarkNode>, TreeNode<BookmarkNode>, boolean)

new static method: List<TreeNode<BookmarkNode>> buildBookmarkTreeNodeList(PDFViewCtrl, Bookmark, boolean)

new method: void expandDisplayNodesNodes(boolean)

new method: void moveChildNode(TreeNode<BookmarkNode>, TreeNode<BookmarkNode>, boolean)

new static method: void setBookMarkTreeNode(PDFViewCtrl, TreeNode<BookmarkNode>, boolean)

new method: void setIsSearchMode(boolean)

removed method: void addChildNode(TreeNode<BookmarkNode>, TreeNode<BookmarkNode>)

removed static method: List<TreeNode<BookmarkNode>> buildBookmarkTreeNodeList(PDFViewCtrl, Bookmark)

removed method: void moveChildNode(TreeNode<BookmarkNode>, TreeNode<BookmarkNode>)

removed static method: void setBookMarkTreeNode(PDFViewCtrl, TreeNode<BookmarkNode>)

PTAREditText

new method: void setFontResource(FontResource)

new method: void updateFont(FontResource)

MyStyleSpan

new class: MyStyleSpan

new constructor: MyStyleSpan(int)

new method: void updateDrawState(TextPaint)

new method: void updateMeasureState(TextPaint)

MyTypefaceSpan

new constructor: MyTypefaceSpan(Typeface, String)

new static field: String sFontPath

removed constructor: MyTypefaceSpan(Typeface)

pdftron-collab package

DataRepository

new method: Flowable<AnnotationEntity> getAnnotation(String)

AnnotationDao

new method: Flowable<AnnotationEntity> getAnnotation(String)

AnnotationDao_Impl

new method: Flowable<AnnotationEntity> getAnnotation(String)

CustomServiceUtils

new static method: String addLastXfdf(CollabDatabase, String, String)

removed static method: String addLastXfdf(CollabDatabase, String)

AnnotationListUIComponent

new constructor: AnnotationListUIComponent(ViewGroup, LifecycleOwner, AnnotationListViewModel, AnnotationViewModel, PDFViewCtrl, CollabAnnotationListSorter, ArrayList<Integer>)

removed constructor: AnnotationListUIComponent(ViewGroup, LifecycleOwner, AnnotationListViewModel, AnnotationViewModel, PDFViewCtrl, CollabAnnotationListSorter)

ReplyHeaderUIView

new method: void setReviewStateIcon(boolean)

ReplyUIViewModel

new method: void setParentAnnotationContent(String)

BaseHeaderUIView

new abstract method: void setReviewStateIcon(boolean)

ReplyHeader

new constructor: ReplyHeader(Context, Annot, boolean, boolean, boolean)

new constructor: ReplyHeader(String, String, int, int, float, boolean, boolean, boolean, AnnotReviewState)

new method: boolean hasReviewState()

removed constructor: ReplyHeader(Context, Annot, boolean, boolean)

removed constructor: ReplyHeader(String, String, int, int, float, boolean, boolean, AnnotReviewState)

XfdfUtils

new static method: Pair<String, HashMap<String, AnnotationEntity>> parseAndProcessXfdf(String, String)

new static method: Pair<String, HashMap<String, AnnotationEntity>> parseAndProcessXfdfCommand(String, String)

new static method: String validateXfdf(String, String)

removed static method: HashMap<String, AnnotationEntity> parseXfdfCommand(String, String)

ReplyViewModel

new method: Flowable<AnnotationEntity> getParentAnnotation()

Get the answers you need: Support