使 Hyperref Form CheckBox 可见

使 Hyperref Form CheckBox 可见

我想排版一个复选框,只需使用 即可$\Box$。但是,它也应该是 PDF 表单的一部分,可以使用 命令来CheckBox实现hyperref

现在,我需要将这两者结合起来——一个是“文本”的可见且可打印部分的框,以及作为 PDF 表单的功能。

使用 时hyperref CheckBox,PDF 文件中不会绘制任何框,除非框作为表单的一部分绘制,即根据 PDF 查看器绘制而不是打印。我希望有一个框作为普通文本的一部分,上面有一个hyperref CheckBox

这应该可以说明问题:

\documentclass{article}
\usepackage{hyperref}
\usepackage{amssymb}
\parindent0pt

\begin{document}
\begin{Form}
\mbox{\CheckBox[width=10pt,height=10pt,bordercolor=0 0 0]{\null}} Option 1\\
$\Box$ Option 2\\
\fbox{\CheckBox[width=10pt,height=10pt,bordercolor=1 1 1]{\null}} Option 3
\end{Form}
\end{document}

第一个“框”以 PDF 的形式工作CheckBox,并被大多数 PDF 查看器绘制为黑框;然而,在打印时它会消失,并且一些 PDF 查看器会忽略该框。

第二个框只是一个普通的框,它按照要求的方式打印但不是 PDF 表格。

第三个框是fbox围绕 的CheckBox,这是理想的结果,只是它的形状很奇怪并且太大——减小 的尺寸CheckBox以使fbox变得足够小会导致 无法正常工作(部分隐藏)CheckBox

MWE 结果

答案1

默认的 Checkbox 字段使用命令进行格式化\LayoutCheckField,定义如下:

\newcommand\LayoutCheckField[2]{#1 #2}

请注意第一个和第二个参数之间有一个空格。

您可以删除这个空间(这可以修复奇怪的矩形形状),然后进行设置,\fboxsep=0pt使其\fbox完美地环绕复选框。

\documentclass{article}
\usepackage{amssymb}
\usepackage{hyperref}
\parindent0pt

\renewcommand\LayoutCheckField[2]{#1#2} % <------------
\fboxsep=0pt % <------------

\begin{document}

\begin{Form}
\mbox{\CheckBox[width=10pt,height=10pt,bordercolor=0 0 0]{\null}} Option 1\\
$\Box$ Option 2\\
\fbox{\CheckBox[width=10pt,height=10pt,bordercolor=1 1 1]{\null}} Option 3
\end{Form}
\end{document}

PDF 中的输出如下所示:

复选框

答案2

您需要一个唯一的名称才能\CheckBox工作。默认名称与标签相同,但在这种情况下标签无效。

无需重新定义,只需在标签中\LayoutCheckField使用即可。通常,标签和复选符号之间会有一个空格。\ignorespaces

请注意,复选框边框会与靠近它的任何东西重叠,这就是第一个和最后一个复选框略微向左显示的原因。此外,如果将边框设为白色,它将覆盖\fbox

起初我对于将其封闭\CheckBox在里面持怀疑态度\mbox,但最后的例子表明,否则高度将扩大以匹配行的其余部分。

\documentclass{article}
\usepackage{xcolor}
\usepackage{hyperref}
\parindent=0pt

\begin{document}

\begin{Form}
\fboxsep=0pt
\fboxrule=0.9pt
\parskip=2pt
\mbox{\CheckBox[width=10pt,height=10pt,bordercolor=0 0 0,name=first]{\ignorespaces}} enclosed checkbox \par
\fbox{\textcolor{white}{\rule{10pt}{10pt}}} simulated checkbox \par
\fbox{\CheckBox[width=10pt,height=10pt,bordercolor=0 0 0,name=third]{\ignorespaces}} overlaid checkbox \par
\CheckBox[width=10pt,height=10pt,bordercolor=0 0 0,name=bonus]{\ignorespaces} \rule[-5pt]{1pt}{20pt} plain checkbox \par
\end{Form}
\end{document}

演示

相关内容