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
Apryse Docs Image
  • Adds support for adding and modifying text markup annotations in the reader (reflow) mode (Nougat+)
Apryse Docs Image
  • Adds ability to search in the user bookmarks, outline and annotations list

Search in Annotation List

Search in Outline

Search in User Bookmarks

Apryse Docs Image
Apryse Docs Image
Apryse Docs Image

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 Apryse for Android brings the core PDF functionality inline with version 9.1.0 of the Apryse 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()

Did you find this helpful?

Trial setup questions?

Ask experts on Discord

Need other help?

Contact Support

Pricing or product questions?

Contact Sales