PDF fields (AcroForm) natively associated with OCG (layers) via the /OC key in the annotation dictionary, with dynamic toggling of the layer state. Target: pdfLaTeX + Adobe Acrobat/Reader.
- Native binding of fields to layers: adds
/OC <ref>to the widget dictionary. - Dynamic layer toggle via
/SetOCGStateaction. - Simple API:
ocgform(environment): defines the OCG context for fields.\OCGTextField(command): text field bound to the current OCG.\OCGToggleand\OCGToggleButton: link/button to show/hide dynamically.
- Engine: pdfLaTeX
- Viewer: Adobe Acrobat/Reader (other apps may ignore
/OCon annotations) - LaTeX packages:
hyperref,ocgx2,acrotex(provideseforms),xparse,l3packages
- Local (same folder as the
.tex):\usepackage{./ocgformfields}(harmless warning about name difference).
- MiKTeX TEXMFHOME (persistent):
- Create:
C:\Users\<user>\texmf\tex\latex\ocgformfields\ocgformfields.sty - MiKTeX Console → Settings → Directories → Add… add
C:\Users\<user>\texmf - Tasks → Refresh file name database
- Verify:
kpsewhich ocgformfields.sty
- Create:
\documentclass{article}
\usepackage[a4paper,margin=2.5cm]{geometry}
\usepackage{hyperref}
\usepackage{ocgx2}
\usepackage{eforms}
\usepackage{ocgformfields}
\begin{document}
\OCGToggle{sens}{\textbf{Show/Hide sensitive data}}
\begin{ocgform}{Sensitive Data}{sens}{on}
Name: \OCGTextField[name=name,width=8cm]{}\\
Email: \OCGTextField[name=email,width=8cm]{}
\end{ocgform}
\medskip
\OCGToggleButton{sens}{Toggle Sensitive Data}
\end{document}