【Foxit PDF SDK】如何执行表单域的JavaScript?

PDF文件中,JavaScript被定义为JavaScript操作。 JavaScript 操作是表单字段的相关操作或附加操作最常用的操作类型之一。 表单字段可以包含当表单字段被激活时应执行的操作或响应于该表单字段的特定触发事件而应执行的附加操作。 在本章,将介绍如何使用 Foxit PDF SDK 执行与表单字段相关的 JavaScript 操作。


如何为表单字段定义操作?

小部件注释用于表示 PDF 文件中表单字段的外观。 因此,表单字段的相关操作或附加操作可以在其本身以及相关的小部件注释中定义:

          在表单字段本身中可能包含其他操作。

          在相关的widget注解中,可能会包含action(通常是在widget注解被激活时触发,比如点击)和附加动作。

附加操作扩展了可以触发操作执行的事件集。 因此可以针对不同的事件触发附加操作。


如何通过Foxit PDF SDK执行表单字段的JavaScript操作?

JavaScript 操作定义为表单字段或其相关小部件注释的附加操作

使用class foxit::pdf::action::AdditionalAction APIAdditionalAction::DoJSAction(TriggerEvent)

          对于表单字段,请使用构造函数foxit::pdf::action::AdditionalAction(Field) 然后使用以“e_TriggerField”开头的枚举值作为AdditionalAction::DoJSAction() 中的参数TriggerEvent

          对于表单字段的相关小部件注释,请使用构造函数foxit::pdf::action::AdditionalAction(Annot) 然后使用以“e_TriggerAnnot”开头的枚举值作为AdditionalAction::DoJSAction() 中的参数TriggerEvent

如下是一个简单的C++示例代码,说明如何使用 class foxit::pdf::action::AdditionalActionAPIAdditionalAction::DoJSAction(TriggerEvent)

// Assume that we have retrieved a foxit::pdf::interform::Field object, named as "field".

// Now, we want to execute the JavaScript action of "field".

AdditionalAction field_aa(field);

// Choose a trigger event type to be executed.

// Here, assume the JavaScript is defined to be triggered when field's value is changed.

AdditionalAction::TriggerEvent trigger_event = AdditionalAction::e_TriggerFieldValueChanged;

bool ret = field_aa.DoJSAction(trigger_event);

..// Check "ret" to see whether API DoJSAction() succeeded or not.

JavaScript 操作定义为表单字段的相关小窗注释中的操作

在这种情况下,class foxit::pdf::action::AddtionalAction 根本无法触发操作。 仅当单击鼠标在相关表单字段中时才能触发。class foxit::pdf::interform::Filler这种情况应该双双调用 API Filler::OnLButtonDown() Filler::OnLButtonUp()