Foxit PDF SDK
FSMarkup Class Reference
Inheritance diagram for FSMarkup:
FSAnnot FSBase FSCaret FSCircle FSFileAttachment FSFreeText FSInk FSLine FSNote FSPolygon FSPolyLine FSRedact FSSound FSSquare FSStamp FSTextMarkup

Instance Methods

(FSNote *) - addReply
 Add a new reply to the end of reply list.
More...
 
(void) - addRichText:style:
 Add a new rich text string to the end.
More...
 
(FSNote *) - addStateAnnot:model:state:
 Add a new state annotation.
More...
 
(FSMarkupArray *) - getGroupElements
 Get an element (as markup annotation) from the group that current markup annotation belongs to.
More...
 
(FSMarkup *) - getGroupHeader
 Get the header annotation (as primary annotation) of the group that current markup annotation belongs to.
More...
 
(FSNote *) - getReply:
 Get a reply by index.
More...
 
(int) - getReplyCount
 Count all replies.
More...
 
(NSString *) - getRichTextContent:
 Get text string of a rich text string specified by index.
More...
 
(int) - getRichTextCount
 Get the count of rich text strings.
More...
 
(FSRichTextStyle *) - getRichTextStyle:
 Get style data of a rich text string specified by index.
More...
 
(FSNoteArray *) - getStateAnnots:
 Get all state annotations in a specified state model.
More...
 
(id) - initWithAnnot:
 Constructor, with parent class object.
More...
 
(void) - insertRichText:content:style:
 Insert a new rich text string to the place which is specified by index.
More...
 
(BOOL) - isGrouped
 Check whether current markup annotation is in a group or not.
More...
 
(BOOL) - removeAllReplies
 Remove all the replies.
More...
 
(BOOL) - removeAllStateAnnots
 Remove all the state annotations.
More...
 
(BOOL) - removePopup
 Remove related pop-up annotation.
More...
 
(BOOL) - removeReply:
 Remove a reply by index.
More...
 
(void) - removeRichText:
 Remove a rich text string specified by index.
More...
 
(void) - setRichTextContent:content:
 Set text string of a rich text string specified by index.
More...
 
(void) - setRichTextStyle:style:
 Set style data of a rich text string specified by index.
More...
 
(BOOL) - ungroup
 Ungroup current markup annotation from the group it belongs to.
More...
 
- Instance Methods inherited from FSAnnot
(BOOL) - FSMoveWithResetAppearance:is_reset_appearance:
 Move current annotation to a new position, specified by a new rectangle in PDF coordinate system.
More...
 
(BOOL) - FSResetApStreamWithIsGenerateNewAppearanceObj:
 Reset appearance stream.
More...
 
(FSPDFStream *) - getAppearanceStream:appearance_state:
 Get annotation's appearance stream with specified type and state.
More...
 
(FSRectI *) - getDeviceRect:
 Get annotation rectangle in device coordinate system.
More...
 
(FSPDFDictionary *) - getDict
 Get annotation's dictionary object.
More...
 
(FSMatrix2D *) - getDisplayMatrix:
 Get the display matrix, from PDF coordinate system to targeted device coordinate system.
More...
 
(int) - getIndex
 Get the index of current annotation in the page which current annotation belongs to.
More...
 
(FSPDFDictionary *) - getOptionalContent
 Get the PDF dictionary of annotation's optional content.
More...
 
(FSPDFPage *) - getPage
 Get the related PDF page.
More...
 
(FSRectF *) - getRect
 Get rectangle, in PDF coordinate system.
More...
 
(FSAnnotType- getType
 Get actual annotation type of current annotation.
More...
 
(BOOL) - hasProperty:
 Whether current annotation has the specified annotation's property.
More...
 
(id) - initWithPage:annot_dict:
 Constructor, with PDF page and annotation's PDF dictionary.
More...
 
(BOOL) - isEmpty
 Check whether current object is empty or not.
More...
 
(BOOL) - isMarkup
 Check if current annotation is a markup annotation.
More...
 
(BOOL) - move:
 Move current annotation to a new position, specified by a new rectangle in PDF coordinate system.
More...
 
(BOOL) - removeProperty:
 Remove a specified annotation's property.
More...
 
(BOOL) - resetAppearanceStream
 Reset appearance stream.
More...
 

Properties

FSDateTimecreationDateTime
 Get or Set creation date time.

 
NSString * intent
 Get or Set intent name.
More...
 
float opacity
 Get or Set opacity value.
More...
 
FSPopuppopup
 Get or Set related pop-up annotation.
More...
 
NSString * subject
 Get or Set subject string.

 
NSString * title
 Get or Set title string.
More...
 
- Properties inherited from FSAnnot
unsigned int borderColor
 Get or Set border color.
More...
 
FSBorderInfoborderInfo
 Get or Set border information.
More...
 
NSString * content
 Get or Set content.

 
unsigned int flags
 Get or Set annotation flags.

 
FSDateTimemodifiedDateTime
 Get or Set last modified date time.

 
NSString * uniqueID
 Get or Set unique ID.

 

Detailed Description

Markup annotations are used primarily to mark up PDF documents. These annotations have text that appears as part of the annotation and may be displayed in other ways by a viewer application, such as in a Comments pane.
Class FSMarkup is derived from class FSAnnot , and is also the base class for all PDF markup annotations. It offers the base functions to get/set markup annotation's common properties. For concrete markup annotation types, please refer to derived classes.
Function FSAnnot::isMarkup can be used to judge if an annotation is a markup annotation.

Note
Currently, following kinds of functions only support note, highlight, underline, strikeout, squiggly, square, circle, free text, stamp, caret, ink, line, polygon, polyline, file attachment annotations:
See also
FSAnnot

Method Documentation

◆ addReply()

- (FSNote *) addReply

Add a new reply to the end of reply list.

Returns
A new note annotation that represents the new reply annotation.

◆ addRichText:style:()

- (void) addRichText: (NSString *)  content
style: (FSRichTextStyle*)  style 

Add a new rich text string to the end.

Markup annotation's content can consist of several rich text strings. Specially, if current annotation is a freetext and its intent is "FreeTextTypewriter", text aligment of input style will be set to all rich text strings of current freetext annotation.

Parameters
[in]contentText string used as content of the new rich text string. This should not be an empty string.
[in]styleStyle data used for the new rich text string.
Returns
None.

◆ addStateAnnot:model:state:()

- (FSNote *) addStateAnnot: (NSString *)  title
model: (FSMarkupStateModel model
state: (FSMarkupState state 

Add a new state annotation.

A markup annotation may have one or several author-specific state associated with it. Each state is not specified in the annotation itself but in a separate note annotation.

  • For state model FSMarkupStateModelReview, this function will add a new state annotation once this function is called.
  • For state model FSMarkupStateModelMarked, this function will find the latest state annotation with this model and the same title as input parameter title: if find one, this function will change state value of the found state annotation and return the found state annotation directly; if not find any suitable state annotation, this function will add a new one and return the new state annotation.


Parameters
[in]titleTitle for the new state annotation. Title can be used to identify the user who added current annotation. This can be an empty string but users are strongly recommended to set a meaningful title when using this function.
[in]modelState model for the new state annotation. It should be one of following values:
[in]stateState value for the new state annotation. It should be one of following values:
Returns
A note annotation which represents the new state annotation. Last modified date time of the returned state annotation would be set with current local system time by default.

◆ getGroupElements()

- (FSMarkupArray *) getGroupElements

Get an element (as markup annotation) from the group that current markup annotation belongs to.

Markup annotations can be grouped. The group consists of a primary annotation and one or more subordinate annotations. Some entries in the primary annotation are treated as group attributes that should apply to the group as a whole; the corresponding entries in the subordinate annotations should be ignored. These entries are contents, last modification time, fill color/border color, title, pop-up annotation, creation time, subject, and open status. So user should respect the group property: when a property of an annotation in group is changed, the other annotations in the same group should be changed too.
Operations that manipulate any annotation in a group, such as movement, cut, and copy, should be treated by viewer applications as acting on the entire group.

Returns
An array that contains all the markup annotations in the group. If current annotation does not belong to a group, this function will return an empty array.

◆ getGroupHeader()

- (FSMarkup *) getGroupHeader

Get the header annotation (as primary annotation) of the group that current markup annotation belongs to.

Markup annotations can be grouped. The group consists of a primary annotation and one or more subordinate annotations. Some entries in the primary annotation are treated as group attributes that should apply to the group as a whole; the corresponding entries in the subordinate annotations should be ignored. These entries are contents, last modification time, fill color/border color, title, pop-up annotation, creation time, subject, and open status. So user should respect the group property: when a property of an annotation in group is changed, the other annotations in the same group should be changed too.
Operations that manipulate any annotation in a group, such as movement, cut, and copy, should be treated by viewer applications as acting on the entire group.

Returns
The header markup annotation of the group that current markup annotation belongs to. If the return value of function FSAnnot::isEmpty (inherited from Markup's parent class) for the returned markup annotation object is YES, that means current annotation does not belong to a group.

◆ getReply:()

- (FSNote *) getReply: (int)  index

Get a reply by index.

Parameters
[in]indexThe index for a specified reply. Valid range: from 0 to (count-1). count is returned by function FSMarkup::getReplyCount.
Returns
A note annotation that represents the specified reply annotation.

◆ getReplyCount()

- (int) getReplyCount

Count all replies.

Returns
The count of replies.

◆ getRichTextContent:()

- (NSString *) getRichTextContent: (int)  index

Get text string of a rich text string specified by index.

Markup annotation's content can consist of several rich text strings.

Parameters
[in]indexIndex for a rich text string whose content is to be retrieved. Valid range: from 0 to (count-1). count is returned by function FSMarkup::getRichTextCount.
Returns
Text string for the specified rich text.

◆ getRichTextCount()

- (int) getRichTextCount

Get the count of rich text strings.

Markup annotation's content can consist of several rich text strings.

Returns
Count of rich text strings.

◆ getRichTextStyle:()

- (FSRichTextStyle *) getRichTextStyle: (int)  index

Get style data of a rich text string specified by index.

Markup annotation's content can consist of several rich text strings.

Parameters
[in]indexIndex for a rich text string whose style data is to be retrieved. Valid range: from 0 to (count-1). count is returned by function FSMarkup::getRichTextCount.
Returns
Style data for the specified rich text string.

◆ getStateAnnots:()

- (FSNoteArray *) getStateAnnots: (FSMarkupStateModel model

Get all state annotations in a specified state model.

A markup annotation may have one or several author-specific state associated with it. Each state is not specified in the annotation itself but in a separate note annotation.

Parameters
[in]modelState model. It should be one of following values:
Returns
A note annotation array which represents all state annotations in the specified state model. All the annotations in this array would be in a chronological order.

◆ initWithAnnot:()

- (id) initWithAnnot: (FSAnnot*)  annot

Constructor, with parent class object.

Parameters
[in]annotParent class object.

Reimplemented from FSAnnot.

Reimplemented in FSRedact, FSSound, FSFileAttachment, FSCaret, FSPolyLine, FSPolygon, FSStamp, FSInk, FSLine, FSFreeText, FSCircle, FSSquare, FSTextMarkup, FSHighlight, FSUnderline, FSStrikeOut, FSSquiggly, and FSNote.

◆ insertRichText:content:style:()

- (void) insertRichText: (int)  index
content: (NSString *)  content
style: (FSRichTextStyle*)  style 

Insert a new rich text string to the place which is specified by index.

Markup annotation's content can consist of several rich text strings. Specially, if current annotation is a freetext and its intent is "FreeTextTypewriter", text aligment of input style will be set to all rich text strings of current freetext annotation.

Parameters
[in]indexIndex for a rich text string whose style data is to be inserted at. Valid range: from 0 to count. count is returned by function FSMarkup::getRichTextCount.
If input value is equal to rich text string count, that means to add the new rich text string to the end. In this case, this funcion equals to function FSMarkup::addRichText:style:.
[in]contentText string used as content of the new rich text string. This should not be an empty string.
[in]styleStyle data used for the new rich text string.
Returns
None.

◆ isGrouped()

- (BOOL) isGrouped

Check whether current markup annotation is in a group or not.

Markup annotations can be grouped. The group consists of a primary annotation and one or more subordinate annotations. Some entries in the primary annotation are treated as group attributes that should apply to the group as a whole; the corresponding entries in the subordinate annotations should be ignored. These entries are contents, last modification time, fill color/border color, title, pop-up annotation, creation time, subject, and open status. So user should respect the group property: when a property of an annotation in group is changed, the other annotations in the same group should be changed too.
Operations that manipulate any annotation in a group, such as movement, cut, and copy, should be treated by viewer applications as acting on the entire group.

Returns
YES means current markup annotation is in a group. NO means current markup annotation does not belong to any group.

◆ removeAllReplies()

- (BOOL) removeAllReplies

Remove all the replies.

Returns
YES means success, while NO means failure.

◆ removeAllStateAnnots()

- (BOOL) removeAllStateAnnots

Remove all the state annotations.

State annotation is represented by note annotation, so, to remove state annotations means to remove this kind of note annotations (with their popup annotations if any) from the page.

Returns
YES means remove all the state annotations successfully or current annotation does not have any state annotation, while NO means failure.

◆ removePopup()

- (BOOL) removePopup

Remove related pop-up annotation.

Returns
YES means that related pop-up annotation is removed successfully, while NO means current markup annotation does not have a related pop-up annotation.

◆ removeReply:()

- (BOOL) removeReply: (int)  index

Remove a reply by index.

If specified reply has its own replies, these sub replies will be removed at the same time.

Parameters
[in]indexThe index for a specified reply to be removed. Valid range: from 0 to (count-1). count is returned by function FSMarkup::getReplyCount.
Returns
YES means success, while NO means failure.

◆ removeRichText:()

- (void) removeRichText: (int)  index

Remove a rich text string specified by index.

Markup annotation's content can consist of several rich text strings.

Parameters
[in]indexIndex for a rich text string whose style data is to be inserted at. Valid range: from 0 to (count-1). count is returned by function FSMarkup::getRichTextCount.

Returns
None.

◆ setRichTextContent:content:()

- (void) setRichTextContent: (int)  index
content: (NSString *)  content 

Set text string of a rich text string specified by index.

Markup annotation's content can consist of several rich text strings.

Parameters
[in]indexIndex for a rich text string whose content is to be set. Valid range: from 0 to (count-1). count is returned by function FSMarkup::getRichTextCount.
[in]contentText string to be set as content for specified rich text. This should not be an empty string.
Returns
None.

◆ setRichTextStyle:style:()

- (void) setRichTextStyle: (int)  index
style: (FSRichTextStyle*)  style 

Set style data of a rich text string specified by index.

Markup annotation's content can consist of several rich text strings.
Specially, if current annotation is a freetext and its intent is "FreeTextTypewriter", text aligment of input style will be set to all rich text strings of current freetext annotation.

Parameters
[in]indexIndex for a rich text string whose style data is to be retrieved. Valid range: from 0 to (count-1). count is returned by function FSMarkup::getRichTextCount.
[in]styleStyle data used to be set to specified rich text.
Returns
None.

◆ ungroup()

- (BOOL) ungroup

Ungroup current markup annotation from the group it belongs to.

  • If current markup annotation is just the group header, this function will disband the whole group.
  • If current markup annotation is just a member of a group, this function will only ungroup current markup annotation from the group it belongs to.
  • If current markup annotation does not belong to any group, this function will do nothing and return NO directly.


Returns
YES means success, while NO means current markup annotation does not belong to any group.

Property Documentation

◆ intent

- (NSString *) intent
readwritenonatomicweak

Get or Set intent name.

Following annotation types have predefined intent name:

  • Free text annotation's predefined intent name: "FreeTextCallout", "FreeTextTypewriter". If no intent name is used, free text annotation would be shown as a text box.
  • Line annotation's predefined intent name: "LineArrow", "LineDimension". If no intent name is used, line annotation would be shown as a common line.
  • Polygon's predefined intent name: "PolygonCloud", "PolygonDimension". If no intent name is used, polygon annotation would be shown as a common polygon.
  • Polyline annotation's predefined intent name: "PolyLineDimension". If no intent name is used, polyline annotation would be shown as a common polyline.


◆ opacity

- (float) opacity
readwritenonatomicassign

Get or Set opacity value.

This property has effect on markup annotation's appearance.

◆ popup

- (FSPopup *) popup
readwritenonatomicweak

Get or Set related pop-up annotation.

Most markup annotations can have a pop-up annotation to show their content, except sound and free text annotations:

  • For sound annotation, it does not have a pop-up annotation.
  • For free text annotation, it shows text directly on the page, so no need to have a pop-up annotation.

Though, in some special(or error) PDF document, sound or free text annotation may have a pop-up annotation, they still do not need a pop-up annotation.

◆ title

- (NSString *) title
readwritenonatomicweak

Get or Set title string.

By convention, annotation's title can be used to identify the user who added current annotation.