happypdf / PDFRadioGroup
Class: PDFRadioGroup
Defined in: src/api/form/PDFRadioGroup.ts:43
Represents a radio group field of a [[PDFForm]].
[[PDFRadioGroup]] fields are collections of radio buttons. The purpose of a radio group is to enable users to select one option from a set of mutually exclusive choices. Each choice in a radio group is represented by a radio button. Radio buttons each have two states: on and off. At most one radio button in a group may be in the on state at any time. Users can click on a radio button to select it (and thereby automatically deselect any other radio button that might have already been selected). Some radio groups allow users to toggle a selected radio button off by clicking on it (see [[PDFRadioGroup.isOffToggleable]]).
Note that some radio groups allow multiple radio buttons to be in the on state at the same type if they represent the same underlying value (see [[PDFRadioGroup.isMutuallyExclusive]]).
Extends
Properties
acroField
readonly acroField: PDFAcroRadioButton;Defined in: src/api/form/PDFRadioGroup.ts:64
The low-level PDFAcroRadioButton wrapped by this radio group.
Overrides
doc
readonly doc: PDFDocument;Defined in: src/api/form/PDFField.ts:96
The document to which this field belongs.
Inherited from
ref
readonly ref: PDFRef;Defined in: src/api/form/PDFField.ts:93
The unique reference assigned to this field within the document.
Inherited from
Methods
addOptionToPage()
addOptionToPage(
option,
page,
options?): void;Defined in: src/api/form/PDFRadioGroup.ts:352
Add a new radio button to this group on the specified page. For example:
const page = pdfDoc.addPage()
const form = pdfDoc.getForm()
const radioGroup = form.createRadioGroup('best.gundam')
const options = {
x: 50,
width: 25,
height: 25,
textColor: rgb(1, 0, 0),
backgroundColor: rgb(0, 1, 0),
borderColor: rgb(0, 0, 1),
borderWidth: 2,
rotate: degrees(90),
}
radioGroup.addOptionToPage('Exia', page, { ...options, y: 50 })
radioGroup.addOptionToPage('Dynames', page, { ...options, y: 110 })This will create a new radio button widget for this radio group field.
Parameters
| Parameter | Type | Description |
|---|---|---|
option | string | The option that the radio button widget represents. |
page | PDFPage | The page to which the radio button widget should be added. |
options? | FieldAppearanceOptions | The options to be used when adding the radio button widget. |
Returns
void
clear()
clear(): void;Defined in: src/api/form/PDFRadioGroup.ts:222
Clear any selected option for this dropdown. This will result in all radio buttons in this group being toggled off. This method will update the underlying state of the dropdown to indicate that no radio buttons have been selected. For example:
const radioGroup = form.getRadioGroup('some.radioGroup.field')
radioGroup.clear()This method will mark this radio group as dirty. See [[PDFRadioGroup.select]] for more details about what this means.
Returns
void
createImageAppearanceStream()
protected createImageAppearanceStream(
widget,
image,
alignment): PDFRef;Defined in: src/api/form/PDFField.ts:498
Create a FormXObject of the supplied image and add it to context. The FormXObject size is calculated based on the widget (including the alignment).
Parameters
| Parameter | Type | Description |
|---|---|---|
widget | PDFWidgetAnnotation | The widget that should display the image. |
image | PDFImage | The image that should be displayed. |
alignment | ImageAlignment | The alignment of the image. |
Returns
The ref for the FormXObject that was added to the context.
Inherited from
PDFField.createImageAppearanceStream
createWidget()
protected createWidget(options): PDFWidgetAnnotation;Defined in: src/api/form/PDFField.ts:333
Parameters
| Parameter | Type |
|---|---|
options | { backgroundColor?: Color; borderColor?: Color; borderWidth: number; caption?: string; height: number; hidden?: boolean; page?: PDFRef; rotate: Rotation; textColor?: Color; width: number; x: number; y: number; } |
options.backgroundColor? | Color |
options.borderColor? | Color |
options.borderWidth | number |
options.caption? | string |
options.height | number |
options.hidden? | boolean |
options.page? | PDFRef |
options.rotate | Rotation |
options.textColor? | Color |
options.width | number |
options.x | number |
options.y | number |
Returns
Inherited from
defaultUpdateAppearances()
defaultUpdateAppearances(): void;Defined in: src/api/form/PDFRadioGroup.ts:423
Update the appearance streams for each of this group's radio button widgets using the default appearance provider for radio groups. For example:
const radioGroup = form.getRadioGroup('some.radioGroup.field')
radioGroup.defaultUpdateAppearances()Returns
void
Overrides
PDFField.defaultUpdateAppearancesdisableExporting()
disableExporting(): void;Defined in: src/api/form/PDFField.ts:251
Indicate that this field's value should not be exported when the form is submitted in a PDF reader. For example:
const field = form.getField('some.field')
field.disableExporting()Returns
void
Inherited from
disableMutualExclusion()
disableMutualExclusion(): void;Defined in: src/api/form/PDFRadioGroup.ts:321
When the user clicks a radio button in this group only it will be selected. No other radio buttons in the group will be selected, even if they share the same underlying value. For example:
const radioGroup = form.getRadioGroup('some.radioGroup.field')
radioGroup.disableMutualExclusion()Note that this option must be disabled prior to adding options to the radio group. It does not currently apply retroactively to existing radio buttons in the group.
Returns
void
disableOffToggling()
disableOffToggling(): void;Defined in: src/api/form/PDFRadioGroup.ts:270
Prevent users from clicking on selected radio buttons in this group to toggle them off. Clicking on a selected radio button will have no effect. The only way to deselect a selected radio button is to click on a different radio button in the group. For example:
const radioGroup = form.getRadioGroup('some.radioGroup.field')
radioGroup.disableOffToggling()Returns
void
disableReadOnly()
disableReadOnly(): void;Defined in: src/api/form/PDFField.ts:174
Allow users to interact with this field and change its value in PDF readers via mouse and keyboard input. For example:
const field = form.getField('some.field')
field.disableReadOnly()Returns
void
Inherited from
disableRequired()
disableRequired(): void;Defined in: src/api/form/PDFField.ts:212
Do not require this field to have a value when the form is submitted. For example:
const field = form.getField('some.field')
field.disableRequired()Returns
void
Inherited from
enableExporting()
enableExporting(): void;Defined in: src/api/form/PDFField.ts:239
Indicate that this field's value should be exported when the form is submitted in a PDF reader. For example:
const field = form.getField('some.field')
field.enableExporting()Returns
void
Inherited from
enableMutualExclusion()
enableMutualExclusion(): void;Defined in: src/api/form/PDFRadioGroup.ts:305
When the user clicks a radio button in this group it will be selected. In addition, any other radio buttons in this group that share the same underlying value will also be selected. For example:
const radioGroup = form.getRadioGroup('some.radioGroup.field')
radioGroup.enableMutualExclusion()Note that this option must be enabled prior to adding options to the radio group. It does not currently apply retroactively to existing radio buttons in the group.
Returns
void
enableOffToggling()
enableOffToggling(): void;Defined in: src/api/form/PDFRadioGroup.ts:256
Allow users to click on selected radio buttons in this group to toggle them off. For example:
const radioGroup = form.getRadioGroup('some.radioGroup.field')
radioGroup.enableOffToggling()> NOTE: This feature is documented in the PDF specification > (Table 226). However, most PDF readers do not respect this option and > prevent users from toggling radio buttons off even when it is enabled. > At the time of this writing (9/6/2020) Mac's Preview software did > respect the option. Adobe Acrobat, Foxit Reader, and Google Chrome did > not.
Returns
void
enableReadOnly()
enableReadOnly(): void;Defined in: src/api/form/PDFField.ts:162
Prevent PDF readers from allowing users to interact with this field or change its value. The field will not respond to mouse or keyboard input. For example:
const field = form.getField('some.field')
field.enableReadOnly()Useful for fields whose values are computed, imported from a database, or prefilled by software before being displayed to the user.
Returns
void
Inherited from
enableRequired()
enableRequired(): void;Defined in: src/api/form/PDFField.ts:200
Require this field to have a value when the form is submitted. For example:
const field = form.getField('some.field')
field.enableRequired()Returns
void
Inherited from
getAction()
getAction(): PDFJavaScriptAction | undefined;Defined in: src/api/form/PDFField.ts:290
Get the default action (A) for this field. This is typically a submit or reset action, or can be a JavaScript action. For example:
const field = form.getField('some.field')
const action = field.getAction()
if (action) {
console.log('Action script:', action.getScript())
}Returns
PDFJavaScriptAction | undefined
The JavaScript action, or undefined if not a JavaScript action.
Inherited from
getJavaScriptActions()
getJavaScriptActions():
| JavaScriptActionMap
| undefined;Defined in: src/api/form/PDFField.ts:271
Get the JavaScript actions associated with this field. Returns a map of action types to JavaScript actions. For example:
const field = form.getField('some.field')
const actions = field.getJavaScriptActions()
if (actions.keystroke) {
console.log('Keystroke script:', actions.keystroke.getScript())
}
if (actions.calculate) {
console.log('Calculate script:', actions.calculate.getScript())
}Returns
| JavaScriptActionMap | undefined
A map of JavaScript actions for this field, or undefined if none exist.
Inherited from
getName()
getName(): string;Defined in: src/api/form/PDFField.ts:132
Get the fully qualified name of this field. For example:
const fields = form.getFields()
fields.forEach(field => {
const name = field.getName()
console.log('Field name:', name)
})Note that PDF fields are structured as a tree. Each field is the descendent of a series of ancestor nodes all the way up to the form node, which is always the root of the tree. Each node in the tree (except for the form node) has a partial name. Partial names can be composed of any unicode characters except a period (.). The fully qualified name of a field is composed of the partial names of all its ancestors joined with periods. This means that splitting the fully qualified name on periods and taking the last element of the resulting array will give you the partial name of a specific field.
Returns
string
The fully qualified name of this field.
Inherited from
getOptions()
getOptions(): string[];Defined in: src/api/form/PDFRadioGroup.ts:93
Get the list of available options for this radio group. Each option is represented by a radio button. These radio buttons are displayed at various locations in the document, potentially on different pages (though typically they are stacked horizontally or vertically on the same page). For example:
const radioGroup = form.getRadioGroup('some.radioGroup.field')
const options = radioGroup.getOptions()
console.log('Radio Group options:', options)Returns
string[]
The options for this radio group.
getSelected()
getSelected(): string | undefined;Defined in: src/api/form/PDFRadioGroup.ts:124
Get the selected option for this radio group. The selected option is represented by the radio button in this group that is turned on. At most one radio button in a group can be selected. If no buttons in this group are selected, undefined is returned. For example:
const radioGroup = form.getRadioGroup('some.radioGroup.field')
const selected = radioGroup.getSelected()
console.log('Selected radio button:', selected)Returns
string | undefined
The selected option for this radio group.
isDirty()
protected isDirty(): boolean;Defined in: src/api/form/PDFField.ts:329
Returns
boolean
Inherited from
isExported()
isExported(): boolean;Defined in: src/api/form/PDFField.ts:227
Returns true if this field's value should be exported when the form is submitted. See [[PDFField.enableExporting]] and [[PDFField.disableExporting]]. For example:
const field = form.getField('some.field')
if (field.isExported()) console.log('Exporting is enabled')Returns
boolean
Whether or not this field's value should be exported.
Inherited from
isMutuallyExclusive()
isMutuallyExclusive(): boolean;Defined in: src/api/form/PDFRadioGroup.ts:289
Returns true if the radio buttons in this group are mutually exclusive. This means that when the user selects a radio button, only that specific button will be turned on. Even if other radio buttons in the group represent the same value, they will not be enabled. The alternative to this is that clicking a radio button will select that button along with any other radio buttons in the group that share the same value. See [[PDFRadioGroup.enableMutualExclusion]] and [[PDFRadioGroup.disableMutualExclusion]]. For example:
const radioGroup = form.getRadioGroup('some.radioGroup.field')
if (radioGroup.isMutuallyExclusive()) console.log('Mutual exclusion is enabled')Returns
boolean
isOffToggleable()
isOffToggleable(): boolean;Defined in: src/api/form/PDFRadioGroup.ts:238
Returns true if users can click on radio buttons in this group to toggle them off. The alternative is that once a user clicks on a radio button to select it, the only way to deselect it is by selecting on another radio button in the group. See [[PDFRadioGroup.enableOffToggling]] and [[PDFRadioGroup.disableOffToggling]]. For example:
const radioGroup = form.getRadioGroup('some.radioGroup.field')
if (radioGroup.isOffToggleable()) console.log('Off toggling is enabled')Returns
boolean
isReadOnly()
isReadOnly(): boolean;Defined in: src/api/form/PDFField.ts:147
Returns true if this field is read only. This means that PDF readers will not allow users to interact with the field or change its value. See [[PDFField.enableReadOnly]] and [[PDFField.disableReadOnly]]. For example:
const field = form.getField('some.field')
if (field.isReadOnly()) console.log('Read only is enabled')Returns
boolean
Whether or not this is a read only field.
Inherited from
isRequired()
isRequired(): boolean;Defined in: src/api/form/PDFField.ts:188
Returns true if this field must have a value when the form is submitted. See [[PDFField.enableRequired]] and [[PDFField.disableRequired]]. For example:
const field = form.getField('some.field')
if (field.isRequired()) console.log('Field is required')Returns
boolean
Whether or not this field is required.
Inherited from
markAsClean()
protected markAsClean(): void;Defined in: src/api/form/PDFField.ts:325
Returns
void
Inherited from
markAsDirty()
protected markAsDirty(): void;Defined in: src/api/form/PDFField.ts:321
Returns
void
Inherited from
needsAppearancesUpdate()
needsAppearancesUpdate(): boolean;Defined in: src/api/form/PDFRadioGroup.ts:401
Returns true if any of this group's radio button widgets do not have an appearance stream for their current state. For example:
const radioGroup = form.getRadioGroup('some.radioGroup.field')
if (radioGroup.needsAppearancesUpdate()) console.log('Needs update')Returns
boolean
Whether or not this radio group needs an appearance update.
Overrides
PDFField.needsAppearancesUpdateof()
static of(
acroRadioButton,
ref,
doc): PDFRadioGroup;Defined in: src/api/form/PDFRadioGroup.ts:57
> NOTE: You probably don't want to call this method directly. Instead, > consider using the [[PDFForm.getOptionList]] method, which will create an > instance of [[PDFOptionList]] for you.
Create an instance of [[PDFOptionList]] from an existing acroRadioButton and ref
Parameters
| Parameter | Type | Description |
|---|---|---|
acroRadioButton | PDFAcroRadioButton | The underlying PDFAcroRadioButton for this radio group. |
ref | PDFRef | The unique reference for this radio group. |
doc | PDFDocument | The document to which this radio group will belong. |
Returns
PDFRadioGroup
select()
select(option): void;Defined in: src/api/form/PDFRadioGroup.ts:185
Select an option for this radio group. This operation is analogous to a human user clicking one of the radio buttons in this group via a PDF reader to toggle it on. This method will update the underlying state of the radio group to indicate which option has been selected. PDF libraries and readers will be able to extract this value from the saved document and determine which option was selected.
For example:
const radioGroup = form.getRadioGroup('best.superhero.radioGroup')
radioGroup.select('One Punch Man')This method will mark this radio group as dirty, causing its appearance streams to be updated when either [[PDFDocument.save]] or [[PDFForm.updateFieldAppearances]] is called. The updated appearance streams will display a dot inside the widget of this check box field that represents the selected option.
Parameters
| Parameter | Type | Description |
|---|---|---|
option | string | The option to be selected. |
Returns
void
updateAppearances()
updateAppearances(provider?): void;Defined in: src/api/form/PDFRadioGroup.ts:450
Update the appearance streams for each of this group's radio button widgets using the given appearance provider. If no provider is passed, the default appearance provider for radio groups will be used. For example:
const radioGroup = form.getRadioGroup('some.radioGroup.field')
radioGroup.updateAppearances((field, widget) => {
...
return {
normal: { on: drawRadioButton(...), off: drawRadioButton(...) },
down: { on: drawRadioButton(...), off: drawRadioButton(...) },
}
})Parameters
| Parameter | Type | Description |
|---|---|---|
provider? | RadioGroupAppearanceProvider | Optionally, the appearance provider to be used for generating the contents of the appearance streams. |
Returns
void
updateOnOffWidgetAppearance()
protected updateOnOffWidgetAppearance(
widget,
onValue,
__namedParameters): void;Defined in: src/api/form/PDFField.ts:412
Parameters
| Parameter | Type |
|---|---|
widget | PDFWidgetAnnotation |
onValue | PDFName |
__namedParameters | AppearanceMapping<{ off: PDFOperator[]; on: PDFOperator[]; }> |
Returns
void
Inherited from
PDFField.updateOnOffWidgetAppearance
updateWidgetAppearances()
protected updateWidgetAppearances(widget, __namedParameters): void;Defined in: src/api/form/PDFField.ts:429
Parameters
| Parameter | Type |
|---|---|
widget | PDFWidgetAnnotation |
__namedParameters | AppearanceMapping<PDFRef | PDFDict> |
Returns
void
Inherited from
PDFField.updateWidgetAppearances
updateWidgetAppearanceWithFont()
protected updateWidgetAppearanceWithFont(
widget,
font,
__namedParameters): void;Defined in: src/api/form/PDFField.ts:400
Parameters
| Parameter | Type |
|---|---|
widget | PDFWidgetAnnotation |
font | PDFFont |
__namedParameters | AppearanceMapping<PDFOperator[]> |
Returns
void