@compdfkit_pdf_sdk/react_native
Version:
ComPDFKit for React Native is a comprehensive SDK that allows you to quickly add PDF functionality to Android, iOS, and React Native applications.
479 lines (456 loc) • 17.2 kB
text/typescript
/**
* Copyright © 2014-2025 PDF Technologies, Inc. All Rights Reserved.
*
* THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
* AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
* UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
* This notice may not be removed from this file.
*/
import { BorderWidth, ColorAlpha, CPDFAlignment, CPDFAnnotationType, CPDFBorderStyle, CPDFCheckStyle, CPDFConfigTool, CPDFContentEditorType, CPDFDisplayMode, CPDFFormType, CPDFLineType, CPDFThemes, CPDFToolbarAction, CPDFToolbarMenuAction, CPDFTypeface, CPDFViewMode, DashGap, FontSize, HexColor, CPDFThemeMode } from "./CPDFOptions";
/**
* Configuration information for displaying PDF using the ComPDFKit.openDocument method.
* Used to configure UI elements, PDF properties, etc.
*
* @example
* const configuration : CPDFConfiguration = {
* modeConfig: {
* initialViewMode: CPDFModeConfig.ViewMode.VIEWER,
* availableViewModes: [
* CPDFModeConfig.ViewMode.VIEWER,
* CPDFModeConfig.ViewMode.ANNOTATIONS,
* CPDFModeConfig.ViewMode.CONTENT_EDITOR,
* CPDFModeConfig.ViewMode.FORMS,
* CPDFModeConfig.ViewMode.SIGNATURES
* ]
* }
* }
*
* ComPDFKit.openDocument(document, 'password', JSON.stringify(configuration))
*/
export class CPDFConfiguration {
/**
* PDF mode configuration
*/
modeConfig?: {
/**
* Default mode to display when opening the PDF View, default is [CPDFToolbarAction.VIEWER]
*/
initialViewMode?: CPDFViewMode,
readerOnly?: boolean,
/**
* Configure supported modes
*/
availableViewModes?: CPDFViewMode[]
}
/**
* Configuration for top toolbar functionality
*/
toolbarConfig?: {
/**
* Set whether to display the top toolbar
*
* Default: true
*/
mainToolbarVisible?: boolean,
/**
* Top toolbar actions for Android platform
*
* Default: thumbnail, search, bota, menu.
*
* {@link CPDFToolbarAction.BACK} button will be shown only on the far left
*/
androidAvailableActions?: CPDFToolbarAction[],
/**
* Left toolbar actions for iOS platform
*
* Default: back, thumbnail
*/
iosLeftBarAvailableActions?: CPDFToolbarAction[],
/**
* Right toolbar actions for iOS platform
*
* Default: search, bota, menu
*/
iosRightBarAvailableActions?: CPDFToolbarAction[],
/**
* Configure the menu options opened in the top toolbar {@link CPDFToolbarAction.MENU}
*/
availableMenus?: CPDFToolbarMenuAction[]
}
/**
* annotation config
*/
annotationsConfig?: {
annotationAuthor?: string,
/**
* {@link CPDFViewMode.ANNOTATIONS} mode, list of annotation functions shown at the bottom of the view.
*/
availableTypes?: CPDFAnnotationType[],
/**
* {@link CPDFViewMode.ANNOTATIONS} mode, annotation tools shown at the bottom of the view.
*/
availableTools?: CPDFConfigTool[],
/**
* When adding an annotation, the annotation’s default attributes.
*/
initAttribute?: {
/**
* Note annotation attribute configuration.
* @param { HexColor } [color] HEX color: #1460F3
* @param { ColorAlpha } [alpha] Color opacity, value range: 0~255
*/
note?: {
color?: HexColor,
alpha?: ColorAlpha
},
/**
* Highlight annotation attribute configuration.
* @param { HexColor } [color] HEX color: #1460F3.
* @param { ColorAlpha } [alpha] Color opacity, value range: 0~255.
*/
highlight?: {
color?: HexColor,
alpha?: ColorAlpha
},
/**
* Underline annotation attribute configuration.
* @param { HexColor } [color] HEX color: #1460F3
* @param { number } [alpha] Color opacity, value range: 0~255
*/
underline?: {
color?: HexColor,
alpha?: ColorAlpha
},
/**
* Squiggly annotation attribute configuration.
* @param { HexColor } [color] HEX color: #1460F3
* @param { ColorAlpha } [alpha] Color opacity, value range: 0~255
*/
squiggly?: {
color?: HexColor,
alpha?: ColorAlpha
},
/**
* Strikeout annotation attribute configuration.
* @param { HexColor } [color] HEX color: #1460F3
* @param { ColorAlpha } [alpha] Color opacity, value range: 0~255
*/
strikeout?: {
color?: HexColor,
alpha?: ColorAlpha
},
/**
* Ink annotation attribute configuration.
* @param { HexColor } [color] HEX color: #1460F3
* @param { ColorAlpha } [alpha] Color opacity, value range: 0~255
* @param { BorderWidth } [borderWidth] Brush thickness, value range: 1~10
*/
ink?: {
color?: HexColor,
alpha?: ColorAlpha,
borderWidth?: BorderWidth
},
/**
* square annotation attribute configuration.
* @param { HexColor } [fillColor] HEX color: #1460F3
* @param { HexColor } [borderColor] HEX color: #1460F3
* @param { ColorAlpha } [colorAlpha] fill color and border color opacity. value range:0~255
* @param { BorderWidth } [borderWidth] border thickness, value range:1~10
* @param { object } [borderStyle] Set the border style to dashed or solid.
*/
square?: {
fillColor?: HexColor,
borderColor?: HexColor,
colorAlpha?: ColorAlpha,
borderWidth?: BorderWidth,
borderStyle?: {
/**
* default: {@link CPDFBorderStyle.SOLID}
*/
style?: CPDFBorderStyle,
/**
* Dashed gap, only style={@link CPDFBorderStyle.DASHED} is valid.
*/
dashGap?: DashGap
}
},
/**
* Circle annotation attribute configuration.
* @param { HexColor } [fillColor] HEX color: #1460F3
* @param { HexColor } [borderColor] HEX color: #1460F3
* @param { ColorAlpha } [colorAlpha] fill color and border color opacity. value range:0~255
* @param { BorderWidth } [borderWidth] border thickness, value range:1~10
* @param { object } [borderStyle] Set the border style to dashed or solid.
*/
circle?: {
fillColor?: HexColor,
borderColor?: HexColor,
colorAlpha?: ColorAlpha,
borderWidth?: BorderWidth,
borderStyle?: {
/**
* default: {@link CPDFBorderStyle.SOLID}
*/
style?: CPDFBorderStyle,
/**
* Dashed gap, only style={@link CPDFBorderStyle.DASHED} is valid.
*/
dashGap?: DashGap
}
},
/**
* Line annotation attribute configuration.
* @param { HexColor } [borderColor] HEX color: #1460F3
* @param { ColorAlpha } [borderAlpha] line color opacity. value range:0~255
* @param { BorderWidth } [borderWidth] border thickness, value range:1~10
* @param { object } [borderStyle] Set the border style to dashed or solid.
*/
line?: {
borderColor?: HexColor,
borderAlpha?: ColorAlpha,
borderWidth?: BorderWidth,
borderStyle?: {
/**
* default: {@link CPDFBorderStyle.SOLID}
*/
style?: CPDFBorderStyle,
/**
* Dashed gap, only style={@link CPDFBorderStyle.DASHED} is valid.
*/
dashGap?: DashGap
}
},
/**
* Arrow annotation attribute configuration.
* @param { HexColor } [borderColor] HEX color: #1460F3
* @param { ColorAlpha } [borderAlpha] line color opacity. value range:0~255
* @param { BorderWidth } [borderWidth] border thickness, value range:0~10
* @param { object } [borderStyle] Set the border style to dashed or solid.
* @param { CPDFLineType } [startLineType] Arrow starting position shape.
* @param { CPDFLineType } [tailLineType] Arrow tail position shape.
*/
arrow?: {
borderColor?: HexColor,
borderAlpha?: ColorAlpha,
borderWidth?: BorderWidth,
borderStyle?: {
/**
* default: {@link CPDFBorderStyle.SOLID}
*/
style?: CPDFBorderStyle,
/**
* Dashed gap, only style={@link CPDFBorderStyle.DASHED} is valid.
*/
dashGap?: DashGap
},
startLineType?: CPDFLineType
tailLineType?: CPDFLineType
},
/**
* Freetext annotation attribute configuration.
* @param { HexColor } [fontColor] HEX color: #1460F3
* @param { ColorAlpha } [fontColorAlpha] text color opacity. value range:0~255
* @param { FontSize } [fontSize] font size, value range:1~100
* @param { boolean } [isBold] Whether the font is bold.
* @param { boolean } [isItalic] Is the font italicized.
* @param { CPDFAlignment } [alignment] Text alignment, {@link CPDFAlignment.LEFT} aligned by default.
* @param { CPDFTypeface } [typeface] The font used by default for text. The default is:{@link CPDFTypeface.HELVETICA}.
*/
freeText?: {
fontColor?: HexColor,
fontColorAlpha?: ColorAlpha,
fontSize?: FontSize,
isBold?: boolean,
isItalic?: boolean,
alignment?: CPDFAlignment,
typeface?: CPDFTypeface
}
}
}
contentEditorConfig?: {
/**
* Content editing mode, the editing mode displayed at the bottom of the view
* Default order: editorText, editorImage
*/
availableTypes?: CPDFContentEditorType[],
/**
* Available tools, including: Setting, Undo, Redo
*/
availableTools?: CPDFConfigTool[]
initAttribute?: {
/**
* When adding text, the text default properties
* @param { HexColor } [fontColor] HEX color: #1460F3
* @param { ColorAlpha } [fontColorAlpha] text color opacity. value range:0~255
* @param { FontSize } [fontSize] font size, value range:1~100
* @param { boolean } [isBold] Whether the font is bold.
* @param { boolean } [isItalic] Is the font italicized.
* @param { CPDFAlignment } [alignment] Text alignment, {@link CPDFAlignment.LEFT} aligned by default.
* @param { CPDFTypeface } [typeface] The font used by default for text. The default is:{@link CPDFTypeface.HELVETICA}.
*/
text?: {
fontColor?: HexColor,
fontColorAlpha?: ColorAlpha,
fontSize?: FontSize,
isBold?: boolean,
isItalic?: boolean,
alignment?: CPDFAlignment,
typeface?: CPDFTypeface
}
}
}
formsConfig?: {
/**
* In {@link CPDFViewMode.Forms} mode, the list of form types at the bottom of the view.
*/
availableTypes?: CPDFFormType[]
/**
* Only supports {@link CPDFConfigTool.UNDO} and {@link CPDFConfigTool.UNDO} .
*/
availableTools?: CPDFConfigTool[]
/**
* Form default attribute configuration
*/
initAttribute?: {
/**
* Text field default properties, such as fill color, border color, text style, etc.
*/
textField?: {
fillColor?: HexColor,
borderColor?: HexColor,
borderWidth?: BorderWidth,
fontColor?: HexColor,
fontSize?: FontSize,
isBold?: boolean,
isItalic?: boolean,
alignment?: CPDFAlignment,
multiline?: boolean,
typeface?: CPDFTypeface
},
checkBox?: CheckBoxAttr,
radioButton?: RadioButtonAttr,
listBox?: ListBoxAttr,
comboBox?: ComboBoxAttr,
pushButton?: {
fillColor?: HexColor,
borderColor?: HexColor,
borderWidth?: BorderWidth,
fontColor?: HexColor,
fontSize?: FontSize,
title?: string,
typeface?: CPDFTypeface,
isBold?: boolean,
isItalic?: boolean,
},
signaturesFields?: {
fillColor?: HexColor,
borderColor?: HexColor,
borderWidth?: number
}
}
}
/**
* PDF View configuration.
*/
readerViewConfig?: {
/**
* Sets whether hyperlinks in the PDF document annotations are highlighted.
*/
linkHighlight?: boolean,
/**
* Sets whether form fields in the PDF document are highlighted.
*/
formFieldHighlight?: boolean,
/**
* Display mode of the PDF document, single page, double page, or book mode.
* Default: {@link CPDFDisplayMode.SINGLE_PAGE}
*/
displayMode?: CPDFDisplayMode,
/**
* Whether PDF page flipping is continuous scrolling.
*/
continueMode?: boolean,
/**
* Whether scrolling is in vertical direction.
* `true`: Vertical scrolling, `false`: Horizontal scrolling.
* Default: true
*/
verticalMode?: boolean,
/**
* Cropping mode.
* Whether to crop blank areas of PDF pages.
* Default: false
*/
cropMode?: boolean,
/**
* Theme color.
* Default: {@link CPDFThemes.light}
*/
themes?: CPDFThemes,
/**
* Whether to display the sidebar quick scroll bar.
*/
enableSliderBar?: boolean,
/**
* Whether to display the bottom page indicator.
*/
enablePageIndicator?: boolean,
/**
* Spacing between each page of the PDF, default 10px.
*/
pageSpacing?: number,
/**
* Sets the outer margins for the PDF reading view.
* - `index 0`: margin left
* - `index 1`: margin top
* - `index 2`: margin right
* - `index 3`: margin bottom
*
* **Default:** `[0,0,0,0]`
*/
margins?: number[],
/**
* Page scale value, default 1.0.
*/
pageScale?: number,
/**
* only android platform.
*/
pageSameWidth?: boolean
}
global? : {
themeMode?: CPDFThemeMode,
fileSaveExtraFontSubset?: boolean,
watermark?: {
saveAsNewFile?: boolean
}
}
};
/**
* @param { HexColor } [fillColor] HEX color: #1460F3
* @param { HexColor } [borderColor] HEX color: #1460F3
* @param { BorderWidth } [borderWidth] border thickness, value range:0~10
* @param { HexColor } [checkedColor]
* @param { boolean } [isChecked]
* @param { CPDFCheckStyle } [checkedStyle]
*/
export class CheckBoxAttr {
fillColor?: HexColor
borderColor?: HexColor
borderWidth?: BorderWidth
checkedColor?: HexColor
isChecked?: boolean
checkedStyle?: CPDFCheckStyle
}
export class RadioButtonAttr extends CheckBoxAttr{}
export class ListBoxAttr {
fillColor?: string
borderColor?: string
borderWidth?: number
fontColor?: string
fontSize?: number
typeface?: CPDFTypeface
isBold?: boolean
isItalic?: boolean
}
export class ComboBoxAttr extends ListBoxAttr{}