LaTeX PDF 表单:检测 CheckBox 改变事件

LaTeX PDF 表单:检测 CheckBox 改变事件

我使用 LaTeX 创建可填写的 PDF 文档。如何检测是否\CheckBox已单击?

它似乎只对 有反应onfocus={...},而对onclicked={...}或没有反应onchanged{...}

EventListener我需要在环境中注册吗insDLJS

代码:

\documentclass{article}
\usepackage{hyperref}

\begin{document}
\begin{Form}
  \CheckBox[name=mytestbox,onchange={app.alert('Hello');},onclick={app.alert('Hello2');}]{Test CheckBox}
\end{Form}

\end{document}

答案1

您正在寻找的活动名为validate

\documentclass{article}
\usepackage{hyperref}

\begin{document}
\begin{Form}
  \CheckBox[name=mytestbox,validate={app.alert('Hello');}]{Test CheckBox}
\end{Form}

\end{document}

根据 hyperref 文档,其中validate包含“用于验证条目的 JavaScript 代码”,因此将其用作一般的“已更改”事件可能看起来像是一种黑客行为,但实际上它会/V在表单字段附加操作字典中生成一个条目。虽然此条目用于验证,这只是一种可能的用途。适用于 PDF 1.7作为一般的“onchange”事件:

(可选;PDF 1.3)当字段值发生更改时应执行的 JavaScript 操作。此操作可能会检查新值的有效性。(名称 V 代表“验证”。)

validate使用而不是例如的优点onmousedownvalidate如果用户使用其他输入方法,它仍然有效,例如使用键盘选择字段而不是用鼠标单击它。

答案2

这些事件有其他名称,在 hpdftex.def 中我发现 onfocus、onblur、onmousedown、onmouseup、onenter、onexit。还有 onclick,但它似乎仅适用于按钮。

并非每个事件对于复选框都有意义,例如鼠标事件似乎与检查冲突。

\documentclass{article}
\usepackage{hyperref}


\begin{document}
\begin{Form}
\CheckBox[name=mytestbox,onenter={app.alert('Hello');}]{Test CheckBox}

\CheckBox[name=mytestboxb,onexit={app.alert('Hello2');}]{Test CheckBox}
\end{Form}
\end{document}

hyperref 的替代品是 eforms (acrotex),它有更多选项(以及更多文档)。参见例如https://tex.stackexchange.com/a/390882/2388

相关内容